如何从javascript中的一个线性箭头函数返回匿名对象?

时间:2016-06-24 13:58:02

标签: javascript ecmascript-6 arrow-functions

我最近切换到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});

3 个答案:

答案 0 :(得分:58)

将对象放在对象初始值设定项周围:

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

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

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

答案 1 :(得分:1)

您好我认为您需要添加paranthesis来返回对象文字

//将主体括号化以返回对象文字表达式: params => ({foo:bar})

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

答案 2 :(得分:-1)

您也可以使用

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