JS 函数的执行时机

160 阅读1分钟

1.为什么如下代码会打印 6 个 6

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

解答:

setTimeout的意思是我会尽快的意思

在这循环的过程中每一循环一次相当于定了一次闹钟,

当循环不满足条件的时候,setTimeout就让console.log()开始输出了,

所以当等于6时, 循环条件不满了足,所以输出了6个6

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

解答:

因为JS在for和let一起用的时候会加东西,

每次循环会多创建一个i存储进来, 所以当输出的时候,会把每一次储存i输出。