javascript箭头函数()=>()是什么意思?

时间:2018-08-31 00:20:25

标签: javascript

我遇到了这种语法。谁能解释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
}

3 个答案:

答案 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