JS 函数的执行时机

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

以上代码输出的结果为6 6 6 6 6 6
setTimeout() 方法用于在指定的毫秒数后调用函数或执行表达式。
setTimeout 是一个异步的函数, 那么这段代码的执行就变成了, 先走完整个循环再打印出i的值,这时i已经变成了6,才开始执行6个console.log(i),所以最终只会打印出6个6。
如果想打印出0 1 2 3 4 5,则需要调整下 let i 的位置

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