JS 函数的执行时机

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

为什么如下代码会打印 6 个 6?

因为计时器setTimeout会等到for循环结束后再去运行console.log,打印i
因为跳出for循环时,i的值为6,有且只有一个i,所以i的最终值为6
因为for循环运行了6次,此时要打印6次i的值,所以是6个6

让上面代码打印 0、1、2、3、4、5 的方法

for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}