gpt4 book ai didi

javascript - JavaScript 上这两种自执行函数的区别

转载 作者:搜寻专家 更新时间:2023-11-01 04:58:22 24 4
gpt4 key购买 nike

我总是使用以下自执行函数以避免将我的代码暴露在 JavaScript 的全局范围内:

(function() { 
//Code comes here
})();

我相信这也被称为自执行匿名函数。有时,我也看到下面的代码用于相同的目的:

(function(d){
//Code comes here
})(document.documentElement);

我不确定这里有什么不同,所以我问这个问题。

JavaScript 上这两种自执行函数有什么区别(或有什么区别)?

最佳答案

下面的代码演示了正在发生的事情。实际上,foobar 变量并不存在,函数是匿名的。

var foo = function() {}
foo();

var bar = function(d){}
bar(document.documentElement);

(function(d){})(d) 方法称为闭包。它用于传递可能发生变化的变量值,例如在循环中。

看一个实际的例子:

for(var i=0; i<10; i++) {
document.links[i].onclick = function(){
alert(i); //Will always alert 9
}
}

实现闭包后:

for(var i=0; i<10; i++) {
(function(i){
document.links[i].onclick = function(){
alert(i); //Will alert 0, 1, ... 9
}
})(i);
}

关于javascript - JavaScript 上这两种自执行函数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377767/

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