我对 javascript 的特定行为有疑问:
我有一个对象,我想用生成的函数填充它。每个函数都包含一个在函数生成循环期间更改的变量。
我的问题是在将函数分配给对象时变量没有被替换。相反,对变量的引用保留在函数中,并且在执行函数时只记住变量的最后一个值。
这是一个最小的例子(也在 jsfiddle:http: //jsfiddle.net/2FN6K/):
var obj = {};
for (var i = 0; i < 10; i++){
var nr = i;
obj[i] = function(){
console.log("result: " + nr);
}
}
for (var x = 0; x < 10; x++){
obj[x]();
}
第二个循环执行所有生成的函数并打印一个 9 作为结果。但我希望他们打印变量在生成时的值(0、1、2、...)。
有没有办法做到这一点?提前致谢。