Подтвердить что ты не робот

Как вернуть анонимный объект из одной функции стрелки лайнера в 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});
4b9b3361

Ответ 1

Поместите парсеры вокруг инициализатора объекта:

data.map((d) => ({id: d.id, selected: bool}) );

Круглые скобки не влияют на значение выражения внутри них, но у них есть синтаксический эффект устранения двусмысленности первого токена содержащегося выражения. Без круглых скобок парсер JavaScript должен решить, означает ли токен { "Здесь начинается тело функции" или "Здесь начинается инициализатор объекта". Он всегда выбирает первый (то есть блок кода).

Вводя круглые скобки, поэтому устраняет путаницу: единственное, что может означать ведущий (, это "здесь приходит выражение", так что { внутри круглых скобок может быть только "здесь идет инициализатор объекта." (Вы не можете отбросить блок кода в середине выражения, другими словами, если вы попытаетесь, вы получите синтаксическую ошибку.)

Ответ 3

Вы также можете использовать

data.map((d) => {
    return {id: d.id, selected: bool}
} );