1

我正在研究如何使用创建一些插件angularjs,其中一些我遇到了这个问题:

(function() {
    'use strict'
    //code...
}).call(window);

与仅使用如下所示的自调用函数有什么区别?

(function() {
    'use strict'
    //code...
})();
4

1 回答 1

2

这两个调用将具有不同的this值。

这段代码

(function() {
    'use strict'
    console.log(this)
})();

将记录,因为严格模式函数的undefined直接非方法调用使用.thisundefined

这段代码

(function() {
    'use strict'
    console.log(this)
}).call(window);

将记录window,因为第一个参数call用于提供this给被调用的函数。

如果我不得不猜测,我会说这样做是为了模仿使用window(而不是undefined) forthis的非严格非方法调用的非严格行为。window如果你的意思是简单地使用window

于 2018-04-19T16:39:45.570 回答