Функция стрелки ECMAScript6, возвращающая объект

При возврате объекта из функции стрелки кажется, что необходимо использовать дополнительный набор {} и оператор return из-за двусмысленности в грамматике:

p => { return { foo: 'bar' } }

Если функция стрелки возвращает что-то еще, {} и return не нужны, например:

p => 'foo'

Есть ли что-то очевидное, что мне не хватает?

+448
27 февр. '15 в 17:02
источник поделиться
3 ответа

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

p => ({ foo: 'bar' });

Вам не нужно вставлять какое-либо другое выражение в круглые скобки:

p => 10;
p => 'foo';
p => true;
p => [1,2,3];
p => null;
p => /^foo$/;

и так далее.

Ссылка: MDN - Возвращаемые объектные литералы

+802
27 февр. '15 в 17:10
источник

Связанные вопросы


Похожие вопросы

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

var func = p => { foo: "bar" }

Это из-за синтаксис ярлыков JavaScript:

Итак, если вы переведёте вышеуказанный код на ES5, он должен выглядеть так:

var func = function (p) {
  foo:
  "bar"; //obviously no return here!
}
+43
15 июн. '16 в 9:40
источник

Если тело функции стрелки завернуто в фигурные скобки, оно не возвращается неявно. Оберните объект в круглые скобки. Это будет выглядеть примерно так.

p => ({ foo: 'bar' })

Обернув тело в parens, функция вернет { foo: 'bar }.

Надеюсь, это решит вашу проблему. Если нет, я недавно написал статью о функциях Arrow, которая более подробно описывает ее. Надеюсь, вы сочтете это полезным. Функции Javascript Arrow

+7
09 авг. '17 в 8:48
источник

Посмотрите другие вопросы по меткам или Задайте вопрос