let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
} //6个6
分析: setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。 尽管是0ms的延迟,但这个任务已经被放入了队列中并且等待下一次执行;并不是立即执行,所以会在for循环结束之后 再执行console.log()。
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
} // 0、1、2、3、4、5
for let 合并使用 会把i复制为多份,就能保证打印的是不同的值
let i = 0
for (i = 0; i < 6; i++) {
(function(i){ //立刻执行函数
setTimeout(function (){
console.log(i);
},0);
})(i); // 0、1、2、3、4、5
}
还可以用立即执行函数,每次for循环执行一次