JS 函数的执行时机

129 阅读1分钟

setTimeout

  • 用于在指定的毫秒数后调用函数或计算表达式;
  • 意思就是尽快执行,而不是马上执行;
  • 可以理解为做完手头的事稍后再执行。

打印 6 个 6

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

输出结果:

image.png

因为 i 是全局的。for 执行完毕之后 i 的值为6。i = 5 满足条件(<6)是最后一轮循环,然后i会执行i++,所以i为6。循环结束之后猜会打印i的值,所以会打印6个6。

打印 0、1、2、3、4、5

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

输出结果:

image.png

因为let有自己的块级作用域,所以每次生成的都是当时块级作用域的 i