JavaScript | continue文

JavaScript JavaScript
スポンサーリンク

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
JavaScript

5. ネスト(入れ子)したループでの注意

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
JavaScript

8. 実用的な例(テキスト処理:空行を無視する)

const lines = ["Hello", "", "World", "   ", "JS"];
for (const line of lines) {
  if (line.trim() === "") continue; // 空行(空白だけ)を無視
  console.log(line);
}
// 出力:
// Hello
// World
// JS
JavaScript

9. よくあるミス・注意点

  • 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 する、ガード節にする、関数化する)を検討しましょう。
タイトルとURLをコピーしました