JS 函数的执行时机
JS 函数的执行时机
- 看看下面这段代码
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
执行结果:会打印 6 个 6
为什么呢?
- for 循环执行完
- setTimeout 要等 for 循环执行完再执行
- 这时候 i=6
- 再打印 6 次 6
- 写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
这里每次把 i 复制一份打印出来,不跟随新的 i 变化,循环后形成 6 个新的 i 加上本身定义的 i,一共 7 个 i
- 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
for(let i = 0 ; i < 6 ; i++){
!function(j){
setTimeout(function timer(){
console.log(j)
}, 0)
}(i)
}