ラベル付きのステートメントを含め、どのステートメントにもラベルを付けることができます。ラベルは、ラベル付きステートメントのどこかが、中断または継続が意味をなさないコンテキストである場合にのみ役立ちます。
したがって
pointless: var x = 0;
は構文的にOKですが、ラベルには何もする(することはできません)しません。
ラベルにbreak
ができるようにするには、break
は内にあるラベル付きのステートメントにする必要があります。 break
は上記の例のようにvar
宣言の "内側"にすることはできません。そのため、それは有用ではありません。しかし、これは動作し、break
の典型的な使用である:
outerLoop: for (var i = 0; i < matrix.length; ++i) {
for (var j = 0; j < matrix[i].length; ++j) {
var inMatrix = matrix[i][j];
if (somethingWeird(inMatrix))
break outerLoop;
}
}
あなたがテストするために、いくつかの厄介なフラグを持たずに、ネストされたループ構造から抜け出すにしたい場合は、あなたがそのようなラベル付きステートメントを使用することができます。
あなたが文の任意の並べ替えから利用可能であることについてbreak
に言及MDNから少し不思議なノートはちょうどあなたがループのものからbreak
ではないことができることを意味します「後藤」のように動作します
someLabel: if (condition(something)) {
// code code code
if (shouldGiveUp())
break someLabel;
// more code
}
外側のif
ステートメントの次のステートメントに移動します。 continue
でこれを行うことはできません。なぜなら、continue
は繰り返し構造でのみ意味があるからです。
ループから「無意味」に侵入する可能性はありますか?私の質問のMDNの "Statement2"はループがラベル付きステートメントの中にネストされている場合にのみ、どのように関連性を持たせますか –
@KiranVedula説明のために私の答えを広げます。 – Pointy
@KiranVedulaの回答が更新されました。 – Pointy