gpt4 book ai didi

javascript - 这种自调用匿名函数变体背后的原因

转载 作者:行者123 更新时间:2023-12-03 01:37:25 26 4
gpt4 key购买 nike

在查看code时在github上,我发现了以下内容:

(function() {

}).call(this);

这显然是一个自调用匿名函数。但为什么要这样写呢?我习惯于看到规范变体 (function() {})()

使用.call(this)作为自调用匿名函数有什么特别的优势吗?

<小时/>

编辑:看起来某些 commonjs 环境将 this 设置为模块顶层的非全局值。您可能想要保留哪些内容,以及它们将 this 设置为什么?

最佳答案

默认情况下,调用诸如 (function(){/*...*/})() 之类的函数会将函数中 this 的值设置为window(在浏览器中),无论 this 的值在创建函数的封闭上下文中可能是什么。

使用 call 允许您手动将 this 的值设置为您想要的任何值。在本例中,它将其设置为封闭上下文中 this 的值。

举个例子:

var obj = {
foo:'bar'
};

(function() {
alert( this.foo ); // "bar"
}).call( obj );

http://jsfiddle.net/LWFAp/

您可以看到我们能够手动将 this 的值设置为 obj 变量引用的对象。

关于javascript - 这种自调用匿名函数变体背后的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287511/

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