这个问题似乎超级原始,但我无法弄明白。
我有这样的代码。我希望结果是三个警告“0”,“1”和“2”。然而,事情并非如此 - 我得到三个2。
for(var i=0; i<3; i++) {
var j=i;
setTimeout(function() {
alert(j);
},1000);
}
代码位于http://jsfiddle.net/8UMCA/。
如何“修复”代码,使其警告“0” - “1” - “2”?
答案 0 :(得分:1)
这让它发挥作用。
for(var i=0; i<3; i++) {
setTimeout(function(j) {
alert(j);
}(i),1000);
}
答案 1 :(得分:1)
或者这个
for(var i=0; i<3; i++) {
(function(){
var j=i;
setTimeout(function() {
alert(j);
},1000);
}
)();
}