Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在setTimeout中维护循环变量的值?Javascript_Javascript_Loops - Fatal编程技术网

如何在setTimeout中维护循环变量的值?Javascript

如何在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(立即调用的函数表达式

基本上,我有一个循环,如果满足某个条件,它会触发一个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(立即调用的函数表达式),它是一种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