При возврате объекта из функции стрелки кажется, что необходимо использовать дополнительный набор {}
и return
ключевое слово из-за неоднозначности в грамматике.
Это означает, что я не могу писать p => {foo: "bar"}
, но должен писать p => { return {foo: "bar"}; }
.
Если функция стрелки возвращает ничего, кроме объекта, {}
и return
не нужно, например: p => "foo"
.
p => {foo: "bar"}
возвращается undefined
.
Модифицированные p => {"foo": "bar"}
броски « SyntaxError
: неожиданный токен: :
» .
Есть что-то очевидное, чего мне не хватает?
источник
p
качестве ключа для объекта литерала, это то , как вы это делаете:p => ({ [p]: 'bar' })
. Без[]
, это будетundefined
или буквально письмоp
.Вы можете спросить, почему синтаксис действителен (но не работает должным образом):
Это из-за синтаксиса меток JavaScript :
Поэтому, если вы перенесете приведенный выше код в ES5, он должен выглядеть следующим образом:
источник
Если тело функции стрелки заключено в фигурные скобки, оно не возвращается неявно. Оберните объект в скобках. Это будет выглядеть примерно так.
Обернув тело пареном, функция вернется
{ foo: 'bar }
.Надеюсь, это решит вашу проблему. Если нет, то я недавно написал статью о функциях Arrow, которая более подробно описывает это. Я надеюсь, что вы найдете это полезным. Javascript Arrow Функции
источник
правильные пути
объяснять
https://github.com/lydiahallie/javascript-questions/issues/220
https://mariusschulz.com/blog/returning-object-literals-from-arrow-functions-in-javascript
источник
Выпуск:
Когда вы делаете:
Интерпретатор JavaScript считает, что вы открываете блок кода с несколькими утверждениями, и в этом блоке вы должны явно указать оператор возврата.
Решение:
Если ваше выражение функции стрелки имеет один оператор , то вы можете использовать следующий синтаксис:
Но если вы хотите иметь несколько операторов, вы можете использовать следующий синтаксис:
В приведенном выше примере первый набор фигурных скобок открывает блок кода из нескольких операторов, а второй набор фигурных скобок предназначен для динамических объектов. В блоке кода с несколькими операторами функции стрелки, вы должны явно использовать операторы возврата
Для получения более подробной информации, смотрите Документацию Mozilla для выражений функций JS Arrow.
источник
Вы всегда можете проверить это для более индивидуальных решений:
источник