Javascript ES6 arrow函数的return语句中括号的作用是什么?
例如,在redux操作中,我在某人的代码中看到: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
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