recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript的一个闭包和延时器问题

刚才看到一个问题,然后写了如下代码

for(var i=1;i<=3;i++){  
(function(i){
    setTimeout(function(){
    	alert(i);
    },10000);
})(i);
}

发现10秒延迟之后弹出1 3 2,而换成1秒延迟就是1 2 3,想不明白.

PHP中文网PHP中文网2896 Il y a quelques jours388

répondre à tous(2)je répondrai

  • PHPz

    PHPz2017-04-10 14:35:47

    10秒之后也可能出现123,这个是随机的,取决于调度算法,不能依赖于这个顺序。

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:35:47

    你把alert改成console.log就没问题了。
    alert会影响定时器的调度。
    所以,通常调试js时,这个问题必须注意啊。
    一不小心,就掉坑里了。

    répondre
    0
  • Annulerrépondre