使用setTimeout时向javascript中的函数传递值

使用setTimeout时向javascript中的函数传递值,javascript,loops,parameters,arguments,settimeout,Javascript,Loops,Parameters,Arguments,Settimeout,我试图在一个循环中设置几个超时,其中setTimeout的参数函数使用不同的值(取决于循环索引)作为参数。这是一个简化的示例: for(i=0; i<5; i++) { var m = setTimeout( function () {console.log(i)}, (i+1)*2000 ); } for(i=0;i如果您愿意限制对现代web浏览器的支持(即不是IE 9和更早版本),则以下操作将有效: for(i=0; i<5; i++) { v

我试图在一个循环中设置几个超时,其中setTimeout的参数函数使用不同的值(取决于循环索引)作为参数。这是一个简化的示例:

for(i=0; i<5; i++) 
{   
    var m = setTimeout( function () {console.log(i)}, (i+1)*2000 );
} 

for(i=0;i如果您愿意限制对现代web浏览器的支持(即不是IE 9和更早版本),则以下操作将有效:

for(i=0; i<5; i++) 
{   
    var m = setTimeout( function (i) {console.log(i)}, (i+1)*2000, i );
}

for(i=0;i您需要一个包装函数来创建一个闭包,并在迭代时保持
i
的值:

for(i=0; i<5; i++) {
    (function(timeout) {
        var m = setTimeout( function () {console.log(timeout)}, (timeout+1)*2000 );
    })(i)        
}
(i=0;i)的