我遇到了这种语法。谁能解释getArg1ListInfo:()=>(object.freeze(arg1))
的意思
function foo (arg1,arg2) {
let retval = {
service:service
}
if(arg1) {
retval.getArg1InfoHelper = () => {
return {
subArg : "string",
getArg1ListInfo:()=>(object.freeze(arg1))
}
}
}
return retval
}
答案 0 :(得分:3)
()=>(object.freeze(arg1))
等同于
()=>object.freeze(arg1)
方括号似乎使您感到困惑。它们不是语法,只是多余的。
以这种方式使用方括号的原因是为了返回对象文字。要在评论中使用@Phil的示例,
() => ({foo: 'bar'})
在此示例中,方括号用于避免语法错误。编写您的示例代码的人过去可能会遇到此问题,并养成了习惯。
答案 1 :(得分:1)
()=>()
语法是定义单语句函数的简便方法,该语句的结果作为箭头函数的结果返回。
对于getArg1ListInfo:()=>(Object.freeze(arg1))
,当调用getArg1ListInfo
时,它将返回object.freeze(arg1)
的结果。
例如:
var result = foo({},{}).getArg1InfoHelper().getArg1ListInfo()
将表示result
包含object.freeze(arg1)
的结果。 According to the MDN docs,这意味着result
将包含对象arg1
。
答案 2 :(得分:1)
(params) => (expression)
等同于
function (params) { return expression;}
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions