如何在setTimeout中维护循环变量的值?Javascript
基本上,我有一个循环,如果满足某个条件,它会触发一个setTimeout。 但是timeout函数需要循环的值(即“i”),如下例所示。 我该怎么做如何在setTimeout中维护循环变量的值?Javascript,javascript,loops,Javascript,Loops,基本上,我有一个循环,如果满足某个条件,它会触发一个setTimeout。 但是timeout函数需要循环的值(即“i”),如下例所示。 我该怎么做 for( var i = 0; i <= 10; i++) { if(something){ setTimeout(function(){ console.log(i); }, 1000); } } for(var i=0;i 对于(var i=0;iUse(立即调用的函数表达式
for( var i = 0; i <= 10; i++) {
if(something){
setTimeout(function(){
console.log(i);
}, 1000);
}
}
for(var i=0;i
对于(var i=0;iUse(立即调用的函数表达式),它是一种JavaScript设计模式,使用JavaScript的函数作用域生成词法范围
for( var i = 0; i <= 10; i++) {
if(something){
(function(i){
setTimeout(function(){
console.log(i);
}, 1000);
})(i);
}
}
for(var i=0;仅供参考,现代浏览器允许您向显示为回调参数的setTimeout
传递额外的参数。setTimeout(函数(i){console.log(i);},1000,i);
谢谢,学到了一些新东西很高兴它有帮助,请将其投票并标记为正确的answrr。当然,“您可以在5分钟内接受答案。”@user3783888:您了解初始问题的原因以及解决方案的工作原理吗?是的,我认为..当超时函数调用i时,i的值会发生变化。因此,当它被立即调用时,i的当前值会传递到该函数中..对吗?或者smth else