JSで無限ループやらかしてしまった
JSでちょっとはまってしまった。
こんなソースを書いていて、無限ループになってしまった。
<script type="text/javascript"> function hoge() { for (i=0; i<5; i++) { fuga(i); } } function fuga(num) { for (i=0; i<3; i++) { document.write(num+"-"+i+"\n"); } } hoge(); </script>
変数「i」がグローバルだからだ。
なので、varで宣言してあげる。
<script type="text/javascript"> function hoge() { for (var i=0; i<5; i++) { fuga(i); } } function fuga(num) { for (var i=0; i<3; i++) { document.write(num+"-"+i+"\n"); } } hoge(); </script>
確認にalertを入れていて、alert無限ループ状態に。。。
そうなった場合に、止める方法があるのだろうか?
IEはまだしも、Firefoxの場合、alertとかBasic認証のダイアログでブラウザごと持ってくのはやめて欲しいとか思った。閲覧中のタブ内でalert表示で、タブを閉じれば回避とか出来ればいいのに。