【JavaScript】JS函数的执行时机

147 阅读1分钟

1、为什么以下代码会打印出6个6?

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

打印出6个6,而不是1,2,3,4,5,6;因为setTimeout函数会让console.log()在for循环全部执行完后执行

2、写出让上面代码打印 0、1、2、3、4、5 的方法

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

打印出0,1,2,3,4,5,而不是6个6,因为JS会在for、let一起用的时候加东西,每次循环会多创建一个i

3、还有什么其他方法可以打印出 0、1、2、3、4、5

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