14、前端经典输出1-10问题

  • let

let存在块作用域,每次循环都会在当前块作用域中形成一个私有变量i,每次定时器使用的都是私有变量

for(let i = 0;i < 10;i++){        
  setTimeout(()=>{
    console.log(i)
  },1000)
}
  • 利用闭包
for(var i = 0;i < 10;i++){        
  setTimeout(((i)=>{
    console.log(i)
  })(i),1000)
}
for(var i = 0;i < 10;i++){        
   (function(i){
     setTimeout(()=>{
         console.log(i)
           },1000)
   })(i)
}
  • bind预先处理
var fn = function(i){
  console.log(i)
}
for(var i = 0;i < 10;i++){        
  setTimeout(fn.bind(null,i),1000);        //用bind预先处理
}

results matching ""

    No results matching ""