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

Wit*_*ult 37 javascript ecmascript-6 arrow-functions

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

data.map(function(d) {
   return {id: d.id, selected: bool};
});
Run Code Online (Sandbox Code Playgroud)

我将上面的代码改为此 -

data.map((d) => {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

但是我从上面的代码中得到了错误.我不知道这里有什么问题?我知道如果没有代码块,则会有箭头函数提供的隐式返回.

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

编辑:

如果我这样做会有什么问题?只是出于好奇的缘故.

data.map((d) => new {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 74

在对象初始化器周围放置parens:

data.map((d) => ({id: d.id, selected: bool}) );
Run Code Online (Sandbox Code Playgroud)

括号对它们内部的表达式的值没有影响,但它们确实具有消除所包含表达式的第一个标记的歧义的语法效果.如果没有括号,JavaScript解析器必须决定{令牌是否意味着"Here starts a function body"或"Here starts a object initializer".它总是选择前者(即代码块).

因此,引入括号可以消除混淆:领导者唯一(可以表达的意思是"这里有一个表达式",因此括号{ 内部只能是"这里是一个对象初始化器".(换句话说,您不能在表达式中间放置一段代码;如果您尝试,则会出现语法错误.)

  • 请你解释一下编辑过的部分吗? (2认同)