setInterval ClearIntervalでループの設定、解除ができるらしいので試していたさいの疑問です
これを実行してみました
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>setInterval/clearInterval example</title> <script> var nIntervId; var c = 0; function func1() { nIntervId = setInterval(text, 1000); } function text() { var oElem = document.getElementById('my_box'); oElem.textContent = c; console.log(c); if (c === 5) { clearInterval(nIntervId); } console.log("abcde");//clearintervalしても下まで行く c++; } </script> </head> <body onload="func1();"> <div id="my_box"> <p>Hello World</p> </div> </body> </html>
そうすると、なんとClearIntervalをした後にもconsole.log("abcde");
が実行されているんです。
ClearIntervalはsetIntervalでのループをキャンセルするので、てっきり実行されないと思ったのですが、これはそういうものなんでしょうか?ループのキャンセルといいながらその場でループが停止せず最後まで実行してしまうことに納得行きません。
clearIntervalのあとにreturnをつけると無事その場で終了するのですが、やはりループのキャンセルといいながらその場でループが停止せず最後まで実行してしまうことに納得行きません

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/10 14:03
2017/10/10 14:18