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 |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |