gpt4 book ai didi

javascript - 为什么每次迭代时打印的值都不会改变?

转载 作者:行者123 更新时间:2023-12-03 09:17:57 25 4
gpt4 key购买 nike

为什么以下 javascript 会记录 3 3次代替0 , 1 ,和2

for (var i = 0; i < 3; i++) { 
setTimeout(function() {
console.log(i);
}, 42);
}

对于每次迭代,不应该基于 i 的值创建一个新函数吗?对于该迭代?然后该函数作为参数传递给 setTimeout

最佳答案

这是因为匿名函数引用了变量 i。当这些匿名函数即将执行时,i 的值是 3 更好的解决方案是这样的:

for (var i = 0; i < 3; i++) { 
setTimeout(function(i) {
console.log(i);
}, 42, i);
}

在匿名函数的范围内缓存迭代索引的前值将允许您打印 3 个不同的值。

关于javascript - 为什么每次迭代时打印的值都不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912813/

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