JS 函数的执行时机

364 阅读1分钟

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

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

setTimeout内的语句会稍后执行,于是等for循环执行完成,i等于6跳出循环,setTimeout内的语句才执行,打印出当前i的值,即为打印六次i,值都是6

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

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

for内的let执行时,每次都生成新的i,等for执行完,新生成的6个i取值分别为0、1、2、3、4、5;打印出0、1、2、3、4、5