JS 函数的执行时机

2021-07-17  本文已影响0人  Sharp丶TJ

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

出现原因:setTimeout是过一会执行,在该函数全局执行完后,i的变量已经变成了6,这时候setTimeout才开始慢悠悠的执行打印的命令;就会导致打印结果为6个6。

更改方式:

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

es6中let可以让setTimeout按照人类理想的方法去实现了,所以只需要把变量从全局变量变为let这个块级变量即可(前者的let是在全局中的)

补充:

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

立即执行函数也可以达成该效果,因为立即执行函数为执行后直接销毁,能够达成期望的效果

上一篇下一篇

猜你喜欢

热点阅读