Как бы вы ответили, если его спросили, почему он не работает?
Я бы сказал, что в JavaScript функции, как правило, не возвращают значение, если вы не явно использование return
сделать это. (Есть языки, где они работают, в частности, CoffeeScript, но не JavaScript.)
Единственным исключением является точная функция стрелки , которая неявно возвращает результат одного выражения, которое разрешено содержать.
Вот пример краткой функции стрелки используются:
someArray.sort((a, b) => a - b);
// ^^^^^^^^^^^^^^^---- concise arrow function
Но это единственное исключение. Подробные функции стрелок, function
функции и методы требуют наличия явноreturn
. Если путь кода, полученный через функцию, не достигает явного return
со значением, результатом вызова функции является значение undefined
.
(Некоторые могут возразить, что конструктор функции являются вторым исключением из этого правила, потому что, когда вы делаете new Thingy
результат является новым штуковина, даже если Thingy
не имеет возвращаемого значения, но это не так . в этом случае, это new
выражение что имеет результат, а не о том, что конструктор возвращает ничего неявно. И в самом деле, различие четко рисуются в спецификации.)
'addToAnswer' не имеет' return' заявление, поэтому она возвращает 'undefined'. – Barmar
Боковое примечание: объявления функций не принимают ';' в конце, ';' после того, как объявление функции 'adder' является посторонним (но безвредным). –