Javascript ES6 arrow函数的return语句中括号的作用是什么?

Javascript ES6 arrow函数的return语句中括号的作用是什么?,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,例如,在redux操作中,我在某人的代码中看到: export const updateMessage = text => { return (dispatch) => { dispatch(updateChatMessage(text)) } } 以及: 它的功能似乎是暗示a返回,但我认为在胖箭头后面的箭头函数括号中已经暗示了这一点 括号({…})的作用是什么?有必要吗?有没有其他方法可以完成同样的事情?当您编写myFunction=value=>({pro

例如,在redux操作中,我在某人的代码中看到:

export const updateMessage = text => {
   return (dispatch) => {
     dispatch(updateChatMessage(text))
   }
}
以及:

它的功能似乎是暗示a
返回
,但我认为在胖箭头后面的箭头函数括号中已经暗示了这一点


括号
({…})
的作用是什么?有必要吗?有没有其他方法可以完成同样的事情?

当您编写
myFunction=value=>({prop:value})时
它返回对象
{prop:value}
,在本例中
{}
是对象分隔符,而不是“函数分隔符”

const updateChatMessage = text => ({
   type: types.someActionType,
   text
})
另一个例子:

如果要将数组的每个元素乘以2,则可以编写:

array.map(elem=>{return elem*2})

array.map(elem=>elem*2)
//结果相同

如果您想要一个带有
()
的eg,它可以将一个物体包裹起来:

let数组=[{val:2},
{val:4},
{val:8},
{val:16}];
让output=array.map(({val})=>({val:val*2}));

控制台日志(输出)如果用括号括住括号,则使函数返回对象文字(因此不需要return关键字)。如果不使用括号,则必须使用return关键字。

在第一个示例中,
{}
用于标识多行代码,这就是为什么需要使用return来获取未定义的
以外的内容

在第二个示例中,
{}
用于创建对象。

根据

//将函数体括起来以返回对象文字表达式:

params=>({foo:bar})

这意味着,如果要隐式返回对象,必须将其括在括号中

如果没有这一点,大括号内的代码将被视为函数体而不是对象(正如您所希望的)

以下是等效的:

params => { return {foo: bar}} // Explicitly return an object (from function body)
params => ({foo: bar}) // Implicitly return an object by wrapping it with parentheses

这就是如何在具有简洁体的arrow函数中返回对象-请参见查找返回对象文字
params => { return {foo: bar}} // Explicitly return an object (from function body)
params => ({foo: bar}) // Implicitly return an object by wrapping it with parentheses