看一下这段代码:
var arr = new Array();
for (var i = 0; i < 10; i++) {
arr[i] = {
func:function() {
console.log(i);
}
}
}
arr[0].func();
我对此感到困惑,因为我认为这会起作用。我基本上希望数组中的每个对象都打印创建函数时为其指定的值。
现在当我调用func()
时,它在控制台中打印 10。有没有办法让它打印0, 1, 2, 3, 4, 5, 6, 7, 8, 9
反而?谢谢!
最佳答案
问题是内部函数引用了每次都会增加的变量“i”。您可以将每次迭代中“i”的值与函数一起存储在对象中,如下所示:
var arr = new Array();
for (var i = 0; i < 10; i++) {
arr[i] = {
func:function() {
console.log(this.value);
},
value: i
}
}
arr[0].func();
关于javascript - 在 javascript 函数中设置常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16391072/