让我们来探讨一下以下代码吧!
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- 打印结果: 6个6
为什么结果是6个6
setTimeout函数的作用是将结果过段时间在打印,当循环中执行后结果不会立刻打印出来,过段时间再打印,而此时i=6,循环执行了六次,所以要打印六次,所以结果为六个6。
使用setTimeout让打印出0、1、2、3、4、5
for(let i=0 ; i<6 ; i++){
setTimeout(() =>{
console.log(i)
},0)
}
- 此时在for循环中用let声明i,let会把i复制,循环了6次复制了6次,当一段时间后i的值有6个,分别是0,1,2,3,4,5。
使用立即执行函数
for (var i=0; i<6; i++) {
!function (i) {
setTimeout(() => console.log(i), 1000*i)
}(i)
}