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

How do i maintain the value of the loop variable in a setTimeout? Javascript

本文关键字:变量 Javascript 循环 维护 setTimeout      更新时间:2023-09-26

基本上,我有一个循环,如果满足某个条件,它就会触发一个setTimeout。但是超时函数需要循环的值(即"i"),如下例所示。我该怎么做?

 for( var i = 0; i <= 10; i++) {
    if(something){
      setTimeout(function(){
         console.log(i);
      }, 1000);
    }
 }

使用IIFE(立即调用的函数表达式),它是一种JavaScript设计模式,使用JavaScript的函数范围生成词法范围。

 for( var i = 0; i <= 10; i++) {
    if(something){
        (function(i){
            setTimeout(function(){
               console.log(i);
            }, 1000);
         })(i);
     }
 }

for (var i = 0; i <= 10; i++) {
  if (true) {
    setTimeout((function(i) {
     return function() { console.log(i); }
    })(i), 1000 * i);
  }
}

我想你希望时间是1000 * i?(它已经在上面的代码中了)