从箭头函数返回对象

Ste*_*rov 7 javascript ecmascript-6

我想从箭头函数(以简短的形式)输出对象,所以完整的代码是:

somemethod(function(item) {
   return {id: item.id};
})
Run Code Online (Sandbox Code Playgroud)

使用箭头函数是:

somemethod((item) => {
   return {id: item.id};
})
Run Code Online (Sandbox Code Playgroud)

现在简短的形式应该是这样的:

somemethod(item = > {id: item.id} )
Run Code Online (Sandbox Code Playgroud)

那个不起作用,还有这个:

somemethod(item = > {{id: item.id}} )
Run Code Online (Sandbox Code Playgroud)

我目前找到的唯一解决方案是使用创建对象表示法:

somemethod(item = > new Object({id: item.id}) )
Run Code Online (Sandbox Code Playgroud)

还有别的办法吗?

Shu*_*gar 7

对于对象,您已使用括号将对象括起来,否则它将不起作用

这是因为大括号 ({}) 内的代码被解析为语句序列

尝试如下

var func = () => ({ foo: 1 });
Run Code Online (Sandbox Code Playgroud)

参考:箭头函数


Ser*_*iev 2

somemethod(item => ({ id: item.id }))
Run Code Online (Sandbox Code Playgroud)

测试:

> a = item => ({id: item.id})
< function item => ({id: item.id})
> a({ id: 5, name: 7 });
< Object {id: 5}
Run Code Online (Sandbox Code Playgroud)