【JavaScript】ループ処理の特定の回をスキップするcontinue文の活用

目次

概要

for 文や while 文などの反復処理において、ある特定の条件に当てはまる場合だけ処理を行わず、次のループ(周回)へ進みたい場合に continue 文を使用します。 これにより、深い if 文の入れ子(ネスト)を防ぎ、コードの可読性を高めることができます。 本記事では、偶数を除外して奇数のみを出力する基本的な例を通して、continue の挙動を解説します。

仕様(入出力)

  • 入力: 0から9までの数値カウンター
  • 出力:
    1. 条件(偶数)に合致した場合はログ出力をスキップ
    2. 条件に合致しない(奇数)場合のみコンソールに数値を出力

基本の使い方

ループブロック内の任意の場所で continue; を記述します。 この行が実行されると、それ以降の処理は無視され、ループの先頭(増減式や条件判定)に戻ります。

コード全文(HTML / JavaScript)

HTML (index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>continue文デモ</title>
    <script src="continue-demo.js" defer></script>
</head>
<body>
    <div class="container">
        <h1>Consoleを確認してください</h1>
        <p>奇数のみがフィルタリングされて出力されます。</p>
    </div>
</body>
</html>

JavaScript (continue-demo.js)

if 文の入れ子を使う書き方と、continue を使ったスマートな書き方を比較できる構成にしています。

/**
 * 偶数をスキップして奇数のみ処理する関数
 * ガード節(Guard Clause)としてcontinueを使用します。
 */
const printOddNumbers = () => {
    console.log("--- ループ処理開始 ---");

    for (let i = 0; i < 10; i++) {
        // 条件: i が偶数(2で割り切れる)の場合
        if (i % 2 === 0) {
            // ここでcontinueすると、以下のconsole.logは実行されず、
            // 次のループ(i++)へ即座に移動します。
            continue;
        }

        // ここに到達するのは「偶数以外(奇数)」の時だけです
        console.log(`奇数を発見: ${i}`);
    }

    console.log("--- ループ終了 ---");
};

// 実行
printOddNumbers();

カスタムポイント

  • 除外条件の変更: i % 2 === 0i % 3 === 0 に変えれば「3の倍数をスキップ」する処理になります。
  • 特定値の除外: リスト処理などで if (item === null) continue; とすることで、無効なデータだけ飛ばして処理を続ける実装が可能です。

注意点

  1. breakとの違い: break はループそのものを「中断・終了」させますが、continue は「今回の周回だけ中断して次はやる」という違いがあります。混同しないようにしましょう。
  2. while文での使用: while 文の中で continue を使う際、変数の更新(i++など)より前に continue してしまうと、変数が更新されずに永遠に同じ値でループし続ける「無限ループ」に陥る危険があります。while 内では特に記述位置に注意が必要です。

応用

入れ子の解消(ガード節)

複雑な条件分岐がある場合、continue を使うことでコードの階層を浅く保つことができます。

// 【悪い例】if文が深くネストしている
/*
for (let i = 0; i < 10; i++) {
    if (isSystemActive) {
        if (i % 2 !== 0) {
            console.log(i);
        }
    }
}
*/

// 【良い例】continueで条件に合わないものを先に弾く
const processWithGuard = (isSystemActive) => {
    for (let i = 0; i < 10; i++) {
        // システム停止中ならスキップ
        if (!isSystemActive) continue;
        
        // 偶数ならスキップ
        if (i % 2 === 0) continue;

        // すべてのチェックを通過した(奇数かつシステム稼働中)
        console.log(i);
    }
};

まとめ

continue 文は「不要なものを先に除外する(早期リターン)」という考え方に基づいた制御構文です。これを利用することで、「もし~なら処理する」という深い入れ子構造を避け、「~ならスキップする」という平坦で読みやすいコードを書くことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次