是什么意思(0,somefunc)(args)

Joe*_*icz 7 javascript function

我一直在浏览一些gmails javascript(写一个扩展名),而且我已经看过(0, _.ab)(a)或者各种各样的变化.这实现了什么?

我尝试了一些测试,比如

function a(a,b,c){ console.dir(a+b+c); }
(0, a)(1,2,3)
Run Code Online (Sandbox Code Playgroud)

但是我无法理解他们为什么不直接打电话a(1,2,3).调用它(0,a)有什么奇怪的好处吗?

我做了一个jsperf(http://jsperf.com/direct-vs-0-func-calls)来测试这一点,a(1)VS (0,a)(1)似乎是相同的.

编辑:据我所知,google只在需要直接调用函数的地方使用它,例如if ((0, _.wa)(a))(取自gmail的源代码)

Alo*_*kin 11

(0, func)()语法确保上下文(this在被调用的函数)func是全球范围内.

例如:

var myContext = {
    func: function () { 
        console.log(this);
    }
};

myContext.func();        // => myContext
(0, myContext.func)();   // => window
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

174 次

最近记录:

11 年,9 月 前