カテゴリ: JavaScript 更新日: 2025/10/06

JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!

JavaScriptのループ処理でよくある無限ループの原因と対策
JavaScriptのループ処理でよくある無限ループの原因と対策

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでループを使っていたら、ずっと止まらなくなってしまいました…。パソコンが固まったみたいで怖いです…」

先生

「それは『無限ループ』と呼ばれる現象ですね。ループが終わらない原因と、それを防ぐ方法を一緒に学んでみましょう。」

生徒

「どうしてそんなことが起きるんですか?初心者でも避けられますか?」

先生

「もちろん避けられます!一つ一つ丁寧に見ていきましょう。」

1. 無限ループとは?

1. 無限ループとは?
1. 無限ループとは?

JavaScript(ジャバスクリプト)でプログラムを書くとき、同じ処理をくり返す「ループ(繰り返し)」はとても便利です。

しかし、ある条件がずっと満たされないままだと、ループが終わらなくなってしまいます。これを無限ループと呼びます。

無限ループが起きると、ブラウザがフリーズしたり、パソコンの動きが止まってしまったりすることがあります。

2. よく使われるループの書き方

2. よく使われるループの書き方
2. よく使われるループの書き方

JavaScriptでよく使われるループの1つがwhile文です。

whileとは、「〇〇の間はくり返す」という意味です。

例えば、次のような書き方をします。


let count = 0;
while (count < 5) {
  console.log("くり返し中");
  count++;
}

くり返し中
くり返し中
くり返し中
くり返し中
くり返し中

この場合、countが0から始まって、1ずつ増えていき、5になるまでループします。

3. 無限ループが起きる例と原因

3. 無限ループが起きる例と原因
3. 無限ループが起きる例と原因

無限ループが起きてしまうのは、たとえば次のようなコードです。


let number = 1;
while (number < 5) {
  console.log("ループ中");
  // number++; を書き忘れている!
}

ループ中
ループ中
ループ中
(ずっと続く…)

この例では、numberの値が増えないため、number < 5の条件がいつまでも変わらず、ループが止まりません。

原因は「ループ内で条件が変化しないこと」です。

4. 対策1:変数の更新を忘れない

4. 対策1:変数の更新を忘れない
4. 対策1:変数の更新を忘れない

無限ループを防ぐためには、ループの中で使っている変数の値が、ちゃんと変わるように書くことが大切です。


let number = 1;
while (number < 5) {
  console.log("ループ中");
  number++; // ここで値を変えることで止まる
}

ループ中
ループ中
ループ中
ループ中

このように、number++(1ずつ増やす)を入れることで、numberが最終的に5になり、ループが止まります。

5. 対策2:ループの条件に気をつける

5. 対策2:ループの条件に気をつける
5. 対策2:ループの条件に気をつける

条件文が間違っていると、無限ループが起こることもあります。

たとえば、「数字が5以上のときに止めたい」のに、number < 5と書いてしまうと、条件が逆になって止まりません。


let number = 10;
while (number < 5) {
  console.log("止まりません!");
  number++;
}

この例ではnumberが10なので、そもそも条件に入らず、実行されないように見えますが、逆に条件を正しく書いていないと、いつまで経っても終わらないことになります。

6. 対策3:for文ならミスが減る

6. 対策3:for文ならミスが減る
6. 対策3:for文ならミスが減る

同じような繰り返しなら、for文を使うと、ミスを減らしやすくなります。

for文では、「スタートの値」「終わりの条件」「1回ごとにどうするか」をすべて一行で書けるからです。


for (let i = 0; i < 5; i++) {
  console.log(i + " 回目のくり返し");
}

0 回目のくり返し
1 回目のくり返し
2 回目のくり返し
3 回目のくり返し
4 回目のくり返し

for文はループの中で変数が自動的に変わるため、更新忘れによる無限ループが起きにくいのです。

7. 対策4:ループが止まる条件を先に考える

7. 対策4:ループが止まる条件を先に考える
7. 対策4:ループが止まる条件を先に考える

ループを書くときは、「いつ終わるのか」を最初に考えるようにしましょう。

  • 条件を満たさなくなったら止める
  • カウンター(数える変数)を使って一定回数で終わらせる

例:5回だけメッセージを表示したい場合


let count = 0;
while (count < 5) {
  console.log("表示中:" + count);
  count++;
}

8. 対策5:条件が複雑なときは関数に分ける

8. 対策5:条件が複雑なときは関数に分ける
8. 対策5:条件が複雑なときは関数に分ける

複雑な条件をループに直接書くと、何が原因で止まらないのかがわかりにくくなります。

そういうときは、条件のチェックを関数にまとめるとわかりやすくなります。


function isContinue(num) {
  return num < 10;
}
let number = 0;
while (isContinue(number)) {
  console.log("現在の数:" + number);
  number++;
}

関数を使うと、「なぜループが止まらないのか」がはっきりしやすくなります。

9. 忘れやすいチェックポイント

9. 忘れやすいチェックポイント
9. 忘れやすいチェックポイント
  • ループの中で変数がちゃんと変わっているか
  • ループの条件が正しいか(終わる条件になっているか)
  • 間違ってループの中に「無限に実行する処理」がないか
  • 動作確認は最初は小さい値で試す(例:5回だけループさせてみる)
カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】