前端学习笔记八

82 阅读1分钟

《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 的第三个参数将自身传给第一个参数