JS 函数的执行时机

91 阅读1分钟

当我们运行如下代码时

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

会得到如下结果

demo1.png

是因为setTimeout()方法设置一个定时器,该定时器在定时器到期后执行里面的代码,即该定时器会尽快执行console.log(i),所以先执行for循环,当 i = 6 之后再打印6次 i。

如果想让以上代码打印0、1、2、3、4、5可以用以下方法:

  • 方法一:
for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

demo2.png

  • 方法二:
let i = 0
for(i = 0; i< 6; i++){
  console.log(i)
}

demo3.png

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

demo4.png