JS 函数的执行时机

122 阅读1分钟
let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
// 打印 6 个 6

分析:

  • 上面 for 循环内, i 为全局变量。
  • 每次循环,都等一会打印 i
  • 循环了 6 次,循环结束后,i 的值为 6
  • for 循环结束后,才执行等一会打印 i 的任务
  • 所以最后会 打印 6 个 6

打印 0、1、2、3、4、5 的方法:
for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

另一种打印 0、1、2、3、4、5 的方法:

for(var i = 0; i < 6; i++){
    (function(j){
        setTimeout(function(){
            console.log(j)
        },0)
    })(i)
}