51

次のように、JavaScript で label を使用することについて知りました。

for (var i in team) {
    if(i === "something") {
        break doThis: //Goto the label
    } else {
        doThat();
    }
}

doThis: //Label
doIt();

私は今までこれについて聞いたことがなく、それについてオンラインで多くの情報を見つけることができず、それには理由があると思い始めています.

これはGOTO他の言語のステートメントに似ており、悪い習慣と見なされるように思えます。これを仮定するのは正しいでしょうか?

4

4 に答える 4

54

JavaScript のラベルは主に break または continue で使用され、ネストされたループで外側を中断したり、内側のループ内のコードから外側のループを継続したりできます。

    outer:
    for (let i = 0; i < 10; i++)
    { 
       let k = 5;
       for (let j = 0; j < 10; j++) // inner loop
          if (j > 5) 
               break; // inner 
          else
               continue outer;  // it will go to next iteration of outer loop
    }

'outer' ラベルなしで continue を使用すると、内側のループの次の反復に進みます。そのため、Javascript にはラベルが必要です。

于 2011-02-05T12:18:30.497 に答える
30

これらはループ ブレーカーの識別子です。ネストされたループ (ループ内のループ) があり、これらの識別子を使用して、いつ、どのループから抜け出すかを条件付きで指定できる場合に便利です。

于 2011-02-05T12:15:11.737 に答える
12

MDNによると、2020年の編集:

ラベル付きのループまたはブロックは非常にまれです。通常、ループ ジャンプの代わりに関数呼び出しを使用できます。

私の2015年の答え:

ラベルの使用を避ける

ラベルはプログラムを読みにくく理解しにくくするため、JavaScript ではあまり一般的に使用されません。可能な限りラベルの使用を避け、場合によっては関数を呼び出すか、エラーをスローすることをお勧めします。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

于 2015-01-17T18:56:04.693 に答える