《JS函数的执行时机》
1. 解释为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
代码中先声明了一个 i,i 是唯一的,里面有一个 setTimeout,所以先执行完当前的 for 循环,再立马执行 console.log 函数进行打印,所以打印 6 个 6。
2. 写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
把let声明放到循环体中
3. 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
let i
for(i = 0; i<6; i++){
setTimeout((value)=>{
console.log(value)
},0,i)
}
使用setTimeout 的第三个参数将自身传给第一个参数