《JS 函数的执行时机》

124 阅读1分钟

1、解释为什么如下代码会打印 6 个 6

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

setTimeout是指过一会儿再执行,也就是循环执行完再打印,当循环6次后,i变成了6,所以会打印出六个6

2、那么怎么打印出0、1、2、3、4、5呢?如下,只需要将let i = 0放入for中即可

for(let i = 0; i<6; i++){ 
setTimeout(()=>{ 
console.log(i) 
},0) 
} 

因为JS在for和let一起使用时会加东西,每次循环都会把i复制一份留在空间里,所以会得到0、1、2、3、4、5

3 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5呢?

可以利用 const 关键字实现

let i 
for(i = 0; i<6; i++){
const x = i 
setTimeout(()=>{
console.log(x) 
})
}