for(i = 0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
//打印结果: 6,6,6,6,6,6
setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。 它将for循环中的六次console.log(i)的执行时间推迟到了for循环结束之后,而此时i的值为6,所以结果为 打印出6个6
打印出 0、1、2、3、4、5的方法:let和for结合,代码如下
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
因为在 for 循环里用 let 声明 i 的话,每次执行 for 循环,其实都会创建一个新的 i(只是看不到),这个 i 会保留当前 i 的值,所以不管你过多久打印 i,当时的 i 已经被保存了下来,所以会依次打印出 0,1,2,3,4,5