我正在研究如何使用angularjs
创建一些插件,其中一些插件我遇到过这个问题:
(function() {
'use strict'
//code...
}).call(window);
与使用下面的自调用函数有什么不同?
(function() {
'use strict'
//code...
})();
答案 0 :(得分:2)
这两个调用将具有不同的this
值。
此代码
(function() {
'use strict'
console.log(this)
})();
将记录undefined
,因为严格模式函数的直接非方法调用使用this
undefined
值。
此代码
(function() {
'use strict'
console.log(this)
}).call(window);
将记录window
,因为call
的第一个参数用于向正在调用的函数提供this
。
如果我不得不猜测,我会说这是为了模仿使用window
(而不是undefined
)对于非{n}的this
的非严格行为 - 方法调用。如果您的意思是window
,请简单地使用window
。