案例一
for(var i = 0; i<6; i++){setTimeout(()=>{console.log(i)
},0)
}
- 以上代码会打印出 6 个 6,原理是:setTimeout 会等到以后代码的 for 循环执行完了,再去执行 console.log(i)
- 而 for 循环执行完之后,i 曾经是 6 了
- 所以会打印出 6 个 6
案例二
如果心愿在 for 循环应用 settimeout 时,可能顺次打印出 0,1,2,3,4,5
用 Let就能够了,let 会独自创立一个作用域 相当于有 6 个 i
for(let i = 0; i<6; i++){setTimeout(()=>{console.log(i)
},0)
}