setTimeout
- 用于在指定的毫秒数后调用函数或计算表达式;
- 意思就是尽快执行,而不是马上执行;
- 可以理解为做完手头的事稍后再执行。
打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
输出结果:
因为 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)
}
输出结果:
因为let有自己的块级作用域,所以每次生成的都是当时块级作用域的 i