ES6 箭头函数的 return 语句中的括号括起来有什么作用?



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

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

和:

const updateChatMessage = text => ({
type: types.someActionType,
text
})

它似乎起到了暗示return的功能,但我认为这已经在胖箭头后面的箭头函数括号中暗示了。

括号({...})做什么?有必要吗?有没有其他方法来完成同样的事情?

当你写myFunction = value => ({prop: value})它返回对象{prop: value},在这种情况下{}对象分隔符而不是"函数分隔符">

const updateChatMessage = text => ({
type: types.someActionType,
text
})

另一个例如:

当你想乘以数组的每个 elem 时,你可以写:

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

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

如果你想要一个带有包裹对象垃圾的()的 eg

let array = [{val: 2},
{val: 4},
{val: 8},
{val: 16}];

let output = array.map( ({val}) => ({val: val*2}) );
console.log(output);

如果用括号括起来,则会使函数返回对象文字(因此不需要 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

在第一个示例中,{}用于标识多行代码,这就是为什么需要返回才能获得undefined以外的内容的原因。

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

相关内容

最新更新