Почему возникает ошибка при объявлении переменной с ключевым словом после return?
===================================================================================

 Добрый день.  

В целях учебной практики у меня было задание написать функцию в одну строку, функцию я написал (ниже). Суть функции роли не играет, вопрос у меня по синтаксису:  

после слова return я пишу sum = // присвоение значения. При этом sum я нигде не объявлял, но мне нужно во что-то присвоить результат выражения, чтобы потом решить: вызвать функцию еще раз рекурсивно с результатом sum или вернуть sum.  

Вопрос: если я пишу "let sum =", возникает ошибка "Ожидалось ")". Если пишу просто "sum =", то все ок. Почему с ключевым словом - ошибка, без него - ок?   

```
const addNums = (num) => {
    return ((sum = num.toString().split('').map(x => Number(x)).reduce((a, b) => a + b)).toString().length > 1) ? addNums(sum) : sum;
}
```
 

 Потому что это невалидно с точки зрения JS, то что вы делаете — это то же самое что и `(let a = 42).toString()` Это просто невалидно. А то, что оно у вас работает без объявления с ключевым словом — это просто потому, что JS один из самых не строгих языков, и прощает очень много ошибок — пытается выполнить код хоть как-то.  

Вы написали что назначение функции не имеет значения, но это не так — потому что в результате вы не получили "однострочник" — получилась обычная невалидная функция, записанная в одну строку. Это не то же самое, что "однострочник". Поясните лучше изначальную задачу.  
  

UPD: итоговое решение:  

```
const addDigits = num => num < 10 ? num : addDigits(('' + num).split('').reduce((acc, el) => (acc += +el), 0));
```