Как вернуть анонимный объект из одной функции liner arrow в javascript? [дубликат]
этот вопрос уже есть ответ здесь:
недавно я переключился на es6 и начал использовать функции стрелки по всему моему коду. Во время рефакторинга я наткнулся ниже кода
data.map(function(d) {
return {id: d.id, selected: bool};
});
Я изменил выше код на это -
data.map((d) => {id: d.id, selected: bool});
но я получал ошибку сверху кода. Я не знаю, что здесь не так? Я знаю, что если нет блока кода, то есть неявное возвращение, предоставляемое функцией стрелки.
но не знаете, как вернуть пустой объект или Анонимный объект с некоторыми инициализированными свойствами ?
Edit:
что плохого, если я сделаю это таким образом? Просто из любопытства.
data.map((d) => new {id: d.id, selected: bool});
3 ответов
поместите parens вокруг инициализатора объекта:
data.map((d) => ({id: d.id, selected: bool}) );
скобки не влияют на значение выражения внутри их, но они do имеют синтаксический эффект устранения неоднозначности первого маркера содержащегося выражения. Без скобок синтаксический анализатор JavaScript должен решить, является ли {
маркер означает " здесь запускается тело функции "или" здесь запускается инициализатор объекта.- Это! .. --7-->всегда выбирает первое (что есть блок кода).
введение скобок, следовательно, устраняет путаницу: единственное, что ведет (
может означать и "здесь приходит выражение", так что {
внутри скобки могут быть только " здесь появляется инициализатор объекта."(Другими словами, вы не можете уронить блок кода в середине выражения; если вы попытаетесь, то получите синтаксическую ошибку.)
Привет, я думаю, вам нужно добавить paranthesis для возврата объекта literal
// заключите тело в скобки, чтобы вернуть выражение объектного литерала: params = > ({foo: bar})
от https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions