К лучшему или к худшему, javascript позволяет функциям стрелок иметь вид
args => expression
или
args => function_body
Таким образом, они "пересекают линию" между старыми школы Javascript замыкания (function (arglist...) {...}
), которые должны иметь тело функции, и лямбды на более чисто функциональных языках, где они всегда будут принимать выражение.
Рабочий пример, который у вас есть, имеет форму args => expression
, но если вы положите фигурные скобки вокруг выражения, оно будет интерпретировано как args => function_body
. Но тело функции без оператора возврата возвращает undefined
. Это легко исправить, добавив ключевое слово return
, так как args => expression
действительно является сокращением для функции, которая возвращает то, к чему вычисляется выражение.
args => {return expression}
Обратите внимание, что это syntacti c неоднозначность также может привести к проблемам, если вы хотите использовать функцию стрелки, для которой expression
должен быть литералом объекта; в этом случае вы должны сказать
args => ({
// object key/value pairs
})
(обратите внимание на дополнительные (), которые мешают компилятору думать, что вы предоставляете тело функции).