2

私の混乱は、次のラベル付きステートメントの例から生じています。

myLoop : while (expression) {
    continue myLoop;
}

および一般的なラベル付きステートメントの構文:

identifier : statement

この例でラベル付けされているのは正確には何ですか?

コードのブロック全体ではありません:

while (expression) 
    statement

単一のステートメントと見なされますか?それともwhile(expression)それ自体が声明ですか?それともwhileステートメント自体ですか?

全体ではない理由:

while (expression) {
    continue myLoop;
} 

myLoopだけでなく、下にラベル付けされていますwhile(expression)。それともそれも起こっていますか?

4

2 に答える 2

2

これまでラベル付き while ループを見たことはありませんでしたが、このhttp://james.padolsey.com/javascript/looping-in-javascript/によると、ラベルが付けられているのは while ループ全体です。

その用途は、特定のループから抜け出すことです。たとえば、ループインループで便利です(リンクからの例)

myOuterLoop : while (condition) {
 myInnerLoop : while (condition) {
    if (whatever) {
        break myOuterLoop;
    }
    if (whatever2) {
        break; // Same as 'break myInnerLoop;'
    }
 }
}
于 2012-06-26T07:44:10.367 に答える
2

ラベル付けされているのはコードのブロックではなく、単なる特定の行です。したがって、ラベルmyLoopがどこにあっても、 continue myLoopと書くことは、「その場所にジャンプして実行を継続する」と言っているようなものです。

しかし、実際には、この例では:

myLoop : while (expression) {
    continue myLoop;
}

ラベルの使用は完全に冗長です。次のように記述しても、結果は同じになります。

while (expression) {
    continue;
}

これは、既定の手段で続行すると、ループの次の反復の先頭に移動するためです。

于 2012-06-26T07:41:53.787 に答える