JavaScriptでブロックにラベルを付ける方法|break文でループを自在に制御するテクニック
ブロック文(block statement)は、0個以上の文をひとまとめにグループ化するための基本的な構文です。JavaScript以外のプログラミング言語では、「複合文(compound statement)」という名称で知られています。
ブロック文の基本構文
ブロック文は、波括弧(中括弧)で文を囲むだけで簡単に作成できます。
{
// 実行したい文のリスト
}
ブロックにラベルを付ける方法
ブロックにラベルを付けたい場合は、識別子(任意のラベル名)とコロンをブロックの前に記述します。
ラベル名: {
// 文のリスト
}
こうして付けたラベルは、break 文や continue 文と組み合わせることで真価を発揮します。特に多重ループでは、通常の break は最も内側のループしか抜けられませんが、ラベルを指定すれば外側のループまで一気に脱出できます。
実例:ラベル付きbreakでループの流れを制御する
以下のサンプルコードでは、outerloop と innerloop という2つのラベルを使い、二重ループの流れを細かく制御しています。実際にブラウザや開発者ツールのコンソールで実行して、動作を確認してみてください。
<script>
console.log("ループ開始!");
outerloop: // 外側のループに付けたラベル
for (var i = 0; i < 5; i++) {
console.log("Outerloop: " + i);
innerloop: // 内側のループに付けたラベル
for (var j = 0; j < 5; j++) {
if (j > 3) break; // 最も内側のループを抜ける
if (i == 2) break innerloop; // innerloopラベルのループを抜ける
if (i == 4) break outerloop; // outerloopラベルの外側ループごと抜ける
console.log("Innerloop: " + j);
}
}
console.log("ループ終了!");
</script>
コードのポイント解説
break;… ラベルを指定しない場合、現在いる最も内側のループのみを抜けます。break innerloop;… 「innerloop」ラベルが付いたループを抜けます。この例では直近の内側ループなので、引数なしのbreakと同じ動作になります。break outerloop;… 「outerloop」ラベルが付いた外側のループごと強制的に終了します。変数 i が4になった時点で、以降の繰り返し処理はすべてスキップされます。
このようにラベルを活用すると、深くネストしたループ処理でも意図したタイミングで柔軟に脱出できるため、複雑な条件分岐を含む処理をより見通しよく記述することができます。
-
JavaScriptのフローチャートでif...elseステートメントをわかりやすく図解する方法
if文は、JavaScriptが条件に応じて判断を下し、処理を条件付きで実行するための最も基本的な制御構文です。この記事では、if...elseステートメントの動作をフローチャート(流れ図)を使って視覚的に理解する方法を解説します。 if...elseステートメントとは if...elseステートメントは、指定した条件式がtrue(真)かfalse(偽)かによって、実行する処理を切り替えるための構文です。基本的な書き方は以下の通りです。 if (条件式) { // 条件がtrueの場合に実行される処理 } else { // 条件がfalseの場合に実行される処理 } if...
-
JavaScriptのブロックスコープとは?letとconstによる変数のスコープをわかりやすく解説
ブロックスコープとは、2つの波括弧 { } で囲まれた領域のことを指します。この領域は、ループ処理、if文、switch文などの内部に存在します。 ES2015(ES6)で導入された let と const を使うことで、そのブロック内でのみアクセスできる「ブロックスコープ変数」を作成できます。従来の var は関数スコープであり、ブロックの外からでもアクセスできてしまうため、意図しないバグの原因になることがありました。let や const を使えば、変数の有効範囲を明確に制限できます。 ブロックスコープの特徴 ブロック外からのアクセス不可: ブロック内で宣言した変数は、ブロックの外から参