《JS 函数的执行时机》

124 阅读1分钟
let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i) 
  },0)
}  //6个6  

分析: setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。 尽管是0ms的延迟,但这个任务已经被放入了队列中并且等待下一次执行;并不是立即执行,所以会在for循环结束之后 再执行console.log()。

for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i) 
  },0)
} //  0、1、2、3、4、5 

for let 合并使用 会把i复制为多份,就能保证打印的是不同的值

let i = 0
for (i = 0; i < 6; i++) { 
 	(function(i){      //立刻执行函数
		setTimeout(function (){
			console.log(i);  
		 },0);  
 	})(i);	//  0、1、2、3、4、5 
}

还可以用立即执行函数,每次for循环执行一次