gpt4 book ai didi

javascript - 通过示例了解 javascript 函数作用域

转载 作者:行者123 更新时间:2023-12-01 14:38:12 24 4
gpt4 key购买 nike

下面两个代码片段有什么区别?

我无法理解它们之间的任何区别。两者都在使用闭包(据我所知,如果我错了请纠正我)并打印相同的输出 0,1,2,3,4。

for(var i = 0; i < 5; i++) {

(function(){
var tmp = i;
setTimeout(function(){
console.log(tmp);
}, 0)
})();

}

for(var i = 0; i < 5; i++) {

setTimeout((function(tmp){
return function() {
console.log(tmp);
}
})(i), 0);

}

最佳答案

如果你忘记了由

完成的标识符解析
var tmp = i;

并将第一个片段重写为

for(var i = 0; i < 5; i++) {

(function(tmp){
setTimeout(function(){
console.log(tmp);
}, 0)
})(i);

}

然后此处的 IIFE 创建一个作用域并设置延迟执行,而第二个片段中的 IIFE 创建一个作用域并返回具有该作用域的函数。

关于javascript - 通过示例了解 javascript 函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676377/

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