gpt4 book ai didi

javascript - (func)() 和 (func).call(window) 之间的区别

转载 作者:行者123 更新时间:2023-11-30 14:39:19 24 4
gpt4 key购买 nike

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

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

与仅使用像下面这样的自调用函数有什么区别?

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

最佳答案

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

这段代码

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

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

这段代码

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

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

如果非要我猜的话,我会说这样做是为了模仿对 使用 window(而不是 undefined)的非严格行为this 一个纯粹的非方法调用。如果您指的是 window,只需使用 window

关于javascript - (func)() 和 (func).call(window) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com