continue文を初心者向けにやさしく・詳しく(例題つき)
continue は「この回だけ処理を飛ばして、次の繰り返しに進みたい」時に使う文です。break(ループを完全に抜ける)と混同しやすいので、違いをはっきりさせながら、実例で丁寧に説明します。
1. continue の基本イメージ
ループの中で continue を実行すると、その回の残りの処理をスキップして、ループは**次の反復(次の回)**に進みます。
「今回はやらない → 次へ」というイメージ。
2. 基本の書き方
continue;
JavaScript単独の文です。普通は if と組み合わせて使います。
3. 一番単純な例(解説つき)
for (let i = 1; i <= 6; i++) {
if (i % 3 === 0) {
continue; // i が 3 の倍数なら、ここで今回の回をスキップ
}
console.log(i);
}
console.log('end');
JavaScript動き(1回ずつ追うと)
- i = 1 → 条件 false →
console.log(1)を実行 - i = 2 → 条件 false →
console.log(2)を実行 - i = 3 → 条件 true →
continue(この回のconsole.logはスキップ) → 次の i - i = 4 → … →
console.log(4) - i = 5 → … →
console.log(5) - i = 6 → 条件 true → スキップ
出力:
1
2
4
5
end
4. continue と break の違い(重要)
continue:今回の回だけスキップして、次の回に進む。break:ループ全体を終了する(もう次の回には行かない)。
for (let i = 1; i <= 5; i++) {
if (i === 3) {
break; // ループ全体終了 → 3 で終わり
}
console.log(i);
}
// 出力: 1 2
JavaScript5. ネスト(入れ子)したループでの注意
continue は 一番内側のループ にしか効きません。
for (let i = 1; i <= 3; i++) {
for (let j = 1; j <= 3; j++) {
if (j === 2) {
continue; // 内側の for (j) の「今回の回」をスキップするだけ
}
console.log(`i=${i}, j=${j}`);
}
}
JavaScriptこの場合、j===2 のときだけ j のループの残り(console.log)がスキップされ、外側 i の処理は続きます。
(外側ループをスキップしたい場合は、ラベル付き continue を使う方法もあります。次で簡単に紹介します)
6. ラベル付き continue(外側ループをスキップしたい時)
JS にはラベルを付けて外側のループへジャンプする「ラベル付き continue」があります。使い方はややレアですが覚えておくと便利。
outer: for (let i = 1; i <= 3; i++) {
for (let j = 1; j <= 3; j++) {
if (j === 2) {
continue outer; // outer(外側の for)を次の回に進める
}
console.log(`i=${i}, j=${j}`);
}
}
JavaScript注意:ラベルは読みやすさを損なうことがあるので、使うならコメントを付けるなど注意して使いましょう。
7. for…of / for…in / while / do…while でも使える
continue はどのループでも使えます。
例:配列を走査して条件に合う要素だけ処理する(for…of)
const arr = [10, 15, 20, 25];
for (const n of arr) {
if (n % 10 !== 0) continue; // 10 の倍数だけ処理
console.log(n);
}
// 出力: 10 20
JavaScript8. 実用的な例(テキスト処理:空行を無視する)
const lines = ["Hello", "", "World", " ", "JS"];
for (const line of lines) {
if (line.trim() === "") continue; // 空行(空白だけ)を無視
console.log(line);
}
// 出力:
// Hello
// World
// JS
JavaScript9. よくあるミス・注意点
continueの後に処理を書いても、その回では実行されません(スキップされます)。- ネストが深いとどのループがスキップされるか分かりにくくなる → コメントや関数分割で読みやすくする。
- 無意味な
continue(例えばループの最後に来ているcontinue)は避ける。読みづらくなるだけです。 forのイテレーション変数を変更するときは注意(continueでループ本体を飛ばすと、ループヘッダでの増分がどう働くかを理解しておく)。
10. 練習問題(解答付き)
短い問題で動きを手で追ってみましょう。
問題1
for (let i = 0; i < 5; i++) {
if (i === 0) continue;
console.log(i);
}
JavaScript→ 出力は?
答え:1 2 3 4(0 の回だけスキップ)
問題2
for (let i = 1; i <= 4; i++) {
if (i % 2 === 1) continue;
console.log(i * 10);
}
JavaScript→ 出力は?
答え:20 40(奇数はスキップ、偶数は出力。出力値は i*10)
問題3(ネスト)
for (let a = 1; a <= 2; a++) {
for (let b = 1; b <= 3; b++) {
if (b === 2) continue;
console.log(`a=${a}, b=${b}`);
}
}
JavaScript→ 出力は?
答え:
a=1, b=1
a=1, b=3
a=2, b=1
a=2, b=3
(内側の b===2 の回だけスキップ)
11. まとめ(初心者へのアドバイス)
- まずは小さなループで
continueを入れて、コンソール出力を目で追ってみてください。 continueは「その回の残りを飛ばす」だけで、ループ自体は続く。breakは違う。- ネストしたループでは「どのループ」が対象になるか注意。必要ならラベルを使うか、処理を関数に分けて読みやすく。
- 読みやすさ第一。
continueを多用してロジックが複雑になるなら、別の書き方(条件を反転して早めにcontinueする、ガード節にする、関数化する)を検討しましょう。
