js 函数 (参数,参数)(参数,参数)是什么意思

如下图:实在搞不懂这是什么意思。。。
clipboard.png

阅读 970
评论 2019-01-22 提问
    1 个回答
    krun
    • 6.4k

    拆几步看

    第一个是逗号操作符

    大概用处就是从左到右依次求值然后返回最后一个值
    所以:

    (0, 1) // 1
    (0, {}) // {}
    (0, function () {}) // function () {}

    然后需要看下面这个例子:

    const _utils = {
        func: function () {
          console.log(this === window)
        }
    }
    
    _utils.func(); // false
    
    let func = _utils.func
    func() //true
    
    (0, _utils.func)(); // true

    直接执行 _utils.func() 时,函数内部的 this 指向了 _utils
    当把 _utils.func 赋值到一个变量时,此时函数 this 将指向该变量所在的作用域,即:

    let b = {a: func} // func 为上面片段中的 `let func = _utils.func`
    b.a() // 此时函数内部的 this 指向 b

    (0, _utils.func) 的效果跟 let func = _utils.func 是差不多的,但是保证 _utils.func 所保存的匿名函数的 this 一定会被指向 window,如:

    const c = {
     a: function () {
       (0, _utils.func)()
     }
    }
    
    c.a() // true

    所以 (0, 匿名函数)(函数调用参数) 的写法就是保证函数是在 window 作用域下执行。

    评论 赞赏
      撰写回答

      登录后参与交流、获取后续更新提醒