当我们运行如下代码时
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
会得到如下结果
是因为setTimeout()方法设置一个定时器,该定时器在定时器到期后执行里面的代码,即该定时器会尽快执行console.log(i),所以先执行for循环,当 i = 6 之后再打印6次 i。
如果想让以上代码打印0、1、2、3、4、5可以用以下方法:
- 方法一:
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- 方法二:
let i = 0
for(i = 0; i< 6; i++){
console.log(i)
}
for(let i = 0; i<6; i++){
console.log(i)
}