for循环不在setTimeout中迭代

时间:2019-03-26 17:34:03

标签: javascript

我试图弄清楚为什么此for循环不像预期的那样呈现0、1、2、3。

它呈现4, 4 , 4, 4

在setTimeout仍然存在的情况下,如何打印0, 1, 2, 3

for (var i = 0; i < 4; i++) {   
    setTimeout(function() {     
        console.log('The index of this number is: ' + i);   
    }, 3000); 
}

1 个答案:

答案 0 :(得分:1)

创建另一个,并在每次迭代时调用

function a(i)
{
 setTimeout(function() {     
        console.log('The index of this number is: ' + i);   
    }, 3000); 
}

for (var i = 0; i < 4; i++) {   
   a(i);
}