美文网首页
JS 函数的执行时机

JS 函数的执行时机

作者: Sharp丶TJ | 来源:发表于2021-07-17 09:17 被阅读0次

    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)}

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

    相关文章

      网友评论

          本文标题:JS 函数的执行时机

          本文链接:https://www.haomeiwen.com/subject/eqsbpltx.html