ラベル

ラベル付けされた文は、breakまたはcontinue文で使用することが出来ます。 参照することが出来るように処理文に対して、先頭に識別子を付けます。

文法

label :
statement
引数 説明
label JavaScriptの予約語以外の識別子を指定します。
statement 処理文です。 breakは、ラベル付けされた文と一緒に使用することが可能で、 continueは、ラベル付けされた繰り返し文と一緒に使用することが可能です。

無限ループに対してラベルを使用することが可能で、 breakまたはcontinue文を使用して、 プログラムが繰り返し処理を中断するべきか、または次の実行に移るべきか否かを指定します。

JavaScriptには、goto文が無い事に注意して下さい。 この代わりとして、breakcontinueを使用することが出来ます。

ラベルの使用は避けてください
ラベルの使用はプログラムを読みにくく、理解しにくいものにするため、JavaScriptにおいて一般的に使用されるものではありません。 出来る限りラベルの使用は避け、関数呼び出し、 またはエラーのthrowを使用して下さい。

繰り返し文のラベル付けされたcontinueの使用例

var i, j;

loop1:
for (i = 0; i < 3; i++) { //"loop1"にラベル付けされた1つ目の文です。
   loop2:
   for (j = 0; j < 3; j++) { //"loop2"にラベル付けされた2つ目の文です。
      if (i == 1 && j == 1) {
         continue loop1;
      }
      console.log("i = " + i + ", j = " + j);
   }
}

// 出力:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
//   "i = 2, j = 0"
//   "i = 2, j = 1"
//   "i = 2, j = 2"
// "i = 1, j = 1"と"i = 1, j = 2"の両方が
// どのようにスキップされたのかに注目してください。

ラベル付けされたcontinue文の使用例

この例では、項目の配列と検証用の配列を与え、全ての検証をパスした項目の数をカウントします。

var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
  for (j = 0; j < tests.length; j++)
    if (!tests[j].pass(items[i]))
      continue top;
  itemsPassed++;
}

for繰り返し文でのラベル付されたbreakの使用例

var i, j;

loop1:
for (i = 0; i < 3; i++) { //"loop1"にラベル付けされた1つ目の文です。
   loop2:
   for (j = 0; j < 3; j++) { //"loop2"にラベル付けされた2つ目の文です。
      if (i == 1 && j == 1) {
         break loop1;
      }
      console.log("i = " + i + ", j = " + j);
   }
}

// 出力:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
// 前述のcontinueの例との違いを確認してください。

ラベル付けされたbreak文の使用例

この例では、項目の配列と検証用の配列を与え、全ての検証をパスするか確認します。

var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
  for (j = 0; j < tests.length; j++)
    if (!tests[j].pass(items[i]))
      continue top;
  itemsPassed++;
}

for繰り返し処理でのラベル付けされたbreakの使用例

この例では、項目の配列と検証用の配列を与え、全ての検証をパスするか確認します。

var allPass = true;
var i, j;

top:
for (i = 0; items.length; i++)
  for (j = 0; j < tests.length; i++)
    if (!tests[j].pass(items[i])){
      allPass = false;
      break top;
    }

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。