@qbr-code

Почему возникает ошибка при объявлении переменной с ключевым словом после 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;
}
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
locky_yotun
@locky_yotun Куратор тега JavaScript
Я видел некоторый джаваскрипт
Потому что это невалидно с точки зрения JS, то что вы делаете — это то же самое что и (let a = 42).toString() Это просто невалидно. А то, что оно у вас работает без объявления с ключевым словом — это просто потому, что JS один из самых не строгих языков, и прощает очень много ошибок — пытается выполнить код хоть как-то.
Вы написали что назначение функции не имеет значения, но это не так — потому что в результате вы не получили "однострочник" — получилась обычная невалидная функция, записанная в одну строку. Это не то же самое, что "однострочник". Поясните лучше изначальную задачу.

UPD: итоговое решение:
const addDigits = num => num < 10 ? num : addDigits(('' + num).split('').reduce((acc, el) => (acc += +el), 0));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы