JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】ラベル付きbreakステートメントの使い方をわかりやすく解説

JavaScriptでは、バージョン1.2以降、ラベル(label)をbreakステートメントと組み合わせることで、ループの流れをより細かく制御できるようになっています。

ラベルとは、識別子の後ろにコロン(:)を付けたもので、特定のステートメントやコードブロックに対して名前を付ける仕組みです。通常のbreakは最も内側のループしか抜けられませんが、ラベルを指定すれば、外側のループまでまとめて脱出することができます。

ラベル付きbreakの基本構文

labelName:
for (初期化; 条件; 更新) {
   // 処理
   break labelName; // このラベルが付いたループを抜ける
}

サンプルコード

次のコードを実行して、breakステートメントとラベルの連携方法を実際に確認してみましょう。

<html>
   <body>
      <script>
         document.write("Entering the loop!<br /> ");
         outerloop: // これがラベル名

         for (var i = 0; i < 5; i++) {
            document.write("Outerloop: " + i + "<br />");
            
            innerloop:
               for (var j = 0; j < 5; j++) {
                  if (j > 3 ) break ; // 最も内側のループを抜ける
                  if (i == 2) break innerloop; // innerloopラベルを指定してbreak
                  if (i == 4) break outerloop; // outerloopラベルを指定して外側のループも抜ける
                  document.write("Innerloop: " + j + " <br />");
               }
         }
         document.write("Exiting the loop!<br /> ");
      </script>
   </body>
</html>

コードの解説

このサンプルでは、二重のforループに対してそれぞれラベルを付けています。

  • outerloop: 外側のforループに付けられたラベルです。
  • innerloop: 内側のforループに付けられたラベルです。
  • if (j > 3) break; — ラベルを指定していないため、最も内側のループ(innerloop)だけを抜けます。
  • if (i == 2) break innerloop; — innerloopラベルを明示的に指定していますが、この場合も結果としては内側のループを抜けます。
  • if (i == 4) break outerloop; — outerloopラベルを指定することで、内側のループだけでなく外側のループごと一気に抜けます。これがラベル付きbreakの最大のメリットです。

実行結果のポイント

変数iが2のときは内側のループが早期に終了し、iが4になった時点でouterloopラベルのおかげで外側のループ全体が終了します。そのため、iが4のときの内側のループ処理は一度も実行されず、そのまま「Exiting the loop!」が表示されて処理が完了します。

ラベル使用時の注意点

ラベルはcontinueステートメントでも同じように使用できます。ただし、ラベルの乱用はコードの可読性を損なう可能性があるため、「ネストが深いループから一気に抜けたい」といった場面に限定して使うのがおすすめです。また、サンプルで使われているdocument.write()は現在では非推奨の手法のため、実際の開発ではconsole.log()などを使うとよいでしょう。

  1. 【初心者向け】JavaScriptのdocument.titleでページタイトルを取得・変更する方法

    JavaScriptでWebページのタイトル(<title>タグの内容)を操作したい場合は、document.title プロパティを使用します。document.titleとは?document.title は、現在表示しているHTMLドキュメントのタイトルを読み書きできるプロパティです。値を取得する場合: var x = document.title; のように参照することで、現在のタイトル文字列が返されます。値を変更する場合: document.title = 新しいタイトル; のように代入すると、ブラウザのタブやウィンドウに表示されるタイトルを動的に書き換えられます。サンプ

  2. MySQLのINSERTステートメントでサブクエリ(SELECT文)を使う方法

    MySQLでは、INSERTステートメントの中でSELECT文(サブクエリ)を組み合わせることで、あるテーブルのデータを別のテーブルへ簡単にコピーできます。ここでは、carsテーブルのデータをcopy_carsテーブルに複製する例を使って、具体的な手順を解説します。1. コピー先テーブルの作成まず、元のテーブルと同じ構造を持つコピー先のテーブルを作成します。CREATE TABLE ... LIKE構文を使えば、列定義やインデックスを含むテーブル構造をそのまま複製できます。mysql> CREATE TABLE copy_cars LIKE cars; Query OK, 0 rows