《JS函数的执行时机》

97 阅读1分钟

1.

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

以上代码会打印出6个6。for循环六次,每次进入setTimeout函数,会执行尽快打印i的值。相当于定了六个闹钟,手头的事情做完之后,六个闹钟会依次响起。手头的事情,就是for循环,所以,循环结束后,i等于6,闹钟响起,执行打印i的值,因为现在i的值是6,所以会打印出6个6。

2. 如何打印出0,1,2,3,4,5

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

把let写进for循环里,JS会在每次进入循环时,复制一份i,并把它保留在setTimeout空间里,这样,在循环结束后,就赋值出了值为0,1,2,3,4,5的六个i,然后依次打印。