ecmascript 6 -如何从javascript的一行箭头函数返回匿名对象

ecmascript 6 - How to return anonymous object from one liner arrow function in javascript?

本文关键字:一行 函数 返回 对象 javascript ecmascript      更新时间:2023-09-26

我最近切换到es6,并开始在我的代码中使用箭头函数。在重构时,我遇到了下面的代码

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

我把上面的代码改成了-

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

但是我从上面的代码得到错误。我不知道这是怎么回事?我知道,如果没有代码块,那么箭头函数提供了隐式返回。

但不知道如何返回空对象或匿名对象与一些属性初始化?

编辑:

如果我这样做有什么错?只是出于好奇。

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

给对象初始化项加上父元素:

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

括号对其中的表达式的值没有影响,但是括号具有消除所包含表达式的第一个标记的歧义的语法效果。如果没有括号,JavaScript解析器必须决定{标记是表示"这里开始一个函数体"还是"这里开始一个对象初始化器"。它总是选择前者(即,一个代码块)。

因此,

引入圆括号消除了混淆:前面的(唯一可以表示的是"这里来了一个表达式",因此圆括号中的{ 只能表示"这里来了一个对象初始化器"。(换句话说,你不能在表达式中间放一段代码;如果你尝试,那么你会得到一个语法错误。)

你好,我认为你需要添加括号来返回对象文字

//将主体括起来返回对象字面值表达式:参数=> ({foo: bar})

从https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

您也可以使用

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