1

'for'を追加したときに'setInterval'が機能しなくなったのはなぜですか?

<script>
    var x=0;
    setInterval(function() {counter()},1);
function counter()
{
     x++;
}
for(var start=0; start <= 100; start++)
    {
        alert("x is "+x+" and start is "+start);
    }
</script>
4

1 に答える 1

6

Javascriptは(この場合)マルチスレッドではないため、setIntervalは基本的に「次回メインスレッドが何もせず、タイムアウトが経過したときに、コールバックを実行させる」ことを意味します。

for ループは、完了するまでメイン スレッドをブロックします (そして、それぞれユーザー入力を待機している 101 個のアラートが表示されるまで終了しません)。そのため、for ループが終了し、メイン スレッドが移動できるようになるまで、コールバックは発生しません。 「何もしない」に戻ります。

于 2012-09-08T09:25:54.127 に答える