案例一

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)}