gpt4 book ai didi

javascript - 由于引用访问,值被覆盖

转载 作者:行者123 更新时间:2023-11-28 19:13:10 25 4
gpt4 key购买 nike

a = [];
for (var i = 0; i < 3; i++) {
a.push(function() {
console.log(i);
})
}

a[0]() // I want 0, but I get 3

我正在尝试编写一段简单的代码,其中有一个函数数组,这样当我在特定索引处执行函数时,应该打印索引值。

但是,上面的代码段对于所有索引值显示相同的结果(在本例中为 3)。我知道该值是通过引用指向的,因此指向 i 的最后一个值。有人能指出如何以正确的方式做到这一点吗?

最佳答案

将它包裹在一个函数中。现在,每次执行循环时,包装函数都有自己的 i 值。

a = [];
for (var i = 0; i < 3; i++) {
(function(i){
a.push(function() {
console.log(i);
})
})(i);
}

a[0]()

关于javascript - 由于引用访问,值被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394500/

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