JavaScriptの while 文は、指定した条件が true である間、処理を繰り返し実行するループ構文です。繰り返し回数が事前に決まっていない場合や、特定の条件が満たされるまで処理を続けたい場合に適しています。
この記事では、while 文の基本構文から、break や continue によるループ制御、無限ループの防止方法まで、実践的なコード例で解説します。
基本的な使い方
while 文は、ループの先頭で条件を評価し、true の場合にブロック内の処理を実行します。条件が false になるとループを終了します。
// 基本的なwhile文
let count = 1;
while (count <= 5) {
console.log(count + '回目のループ');
count++;
}
console.log('ループ終了。countの値:', count);1回目のループ
2回目のループ
3回目のループ
4回目のループ
5回目のループ
ループ終了。countの値: 6上記の例では、count が1から始まり、5以下の間ループが実行されます。ループ内で count++ によりカウンターを増やしているため、5回繰り返した後に count が6になり、条件 count <= 5 が false となってループが終了します。
ここで重要なのは、ループ内で条件を変化させる処理(この例では count++)を忘れないことです。これがないと条件が永遠に true のままとなり、無限ループに陥ります。
break と continue
break はループを即座に終了し、continue は現在の繰り返しをスキップして次の繰り返しに進みます。
// break の例:特定の条件でループを中断
let num = 0;
while (num < 100) {
num++;
if (num * num > 50) {
console.log(num + 'の二乗が50を超えました');
break;
}
}
// continue の例:偶数だけをスキップ
let i = 0;
while (i < 10) {
i++;
if (i % 2 === 0) {
continue; // 偶数はスキップ
}
console.log(i);
}8の二乗が50を超えました
1
3
5
7
9break はデータの検索や、ユーザー入力の待機など「条件が見つかったら終了」というパターンでよく使います。continue は「特定の条件に該当するものだけスキップしたい」場合に便利です。
実践例:入力値の検証ループ
// ランダムな数値を生成して条件を満たすまで繰り返す
let attempts = 0;
let target = 7;
let result;
while (true) {
result = Math.floor(Math.random() * 10) + 1;
attempts++;
console.log(attempts + '回目: ' + result);
if (result === target) {
break;
}
}
console.log(target + 'が出るまで' + attempts + '回かかりました');
// 配列から条件に合う要素を探す
const data = [12, 45, 7, 23, 89, 3, 67];
let index = 0;
while (index < data.length) {
if (data[index] > 50) {
console.log('50を超える最初の値: ' + data[index] + ' (インデックス: ' + index + ')');
break;
}
index++;
}1回目: 3
2回目: 9
3回目: 7
7が出るまで3回かかりました
50を超える最初の値: 89 (インデックス: 4)while (true) は意図的な無限ループで、break で抜けることを前提としています。条件が複雑でループの途中で判定したい場合に有用ですが、break に到達しないパスがないか慎重に確認する必要があります。
繰り返し回数が決まっている場合は for 文、条件が満たされるまで繰り返す場合は while 文を使うのが一般的です。for 文は初期化・条件・更新が1行にまとまるため、カウンター変数のループには for の方が読みやすくなります。
while 文で最もよくあるバグは無限ループです。条件を変化させる処理を忘れたり、continue でカウンター更新をスキップしたりすると発生します。開発中は安全策として let safety = 0; のようなカウンターを用意し、if (safety++ > 10000) break; を入れておくと、万が一の無限ループを防止できます。
まとめ
while文は条件がtrueの間、繰り返し処理を実行する- ループ内で条件を変化させる処理を忘れると無限ループになる
breakでループを即座に終了、continueで現在の繰り返しをスキップできるwhile (true)とbreakの組み合わせで複雑な終了条件に対応できる- 繰り返し回数が決まっている場合は
for文の方が適切