Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

labeled 文 は、break 文や continue 文と組み合わせて使用できます。これは文に、break または continue 文を使って参照できる識別子を与えます。

構文

label :
   statement
label
予約語ではない任意の JavaScript の識別子。
statement
文。break は任意のラベル付き文で使うことができ、continue はループのラベル付き文で使うことができます。

説明

ループを識別するためにラベルを使い、そして、プログラムがループを中断すべきか、またはその実行を継続すべきかを指し示すために、break または continue 文を使うことができます。

JavaScript には goto 文がなく、ラベルと break または continue のみ使用できます。

for ループでラベル付き continue を使用する

var i, j;

loop1:
for (i = 0; i < 3; i++) {      // 1 番目の for 文に "loop1" というラベルをつける
   loop2:
   for (j = 0; j < 3; j++) {   // 2 番目の for 文に "loop2" というラベルをつける
      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 文を使用する

配列 items と tests について、このサンプルはすべてを tests に渡した items の数を数えます。

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++) {      // 1 番目の for 文に "loop1" というラベルをつける
   loop2:
   for (j = 0; j < 3; j++) {   // 2 番目の for 文に "loop2" というラベルをつける
      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 文を使用する

配列 items と tests について、このサンプルは items のすべてを tests に渡したかを判断します。

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;
    }

仕様

仕様書 策定状況 コメント
ECMAScript 3rd Edition (ECMA-262) 標準 最初期の定義。JavaScript 1.2 で実装。
ECMAScript 5.1 (ECMA-262)
Labelled statement の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Labelled statement の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
Labelled statement の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

参照

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: yyss, teoli, ethertank, Mgjbot, Nanto vi
 最終更新者: yyss,