如何在循环中使用索引变量进行函数?

时间:2014-03-05 22:44:29

标签: javascript

这个问题似乎超级原始,但我无法弄明白。

我有这样的代码。我希望结果是三个警告“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”?

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);           
       }
       )();



   }