6

次のコード ブロックが正常に実行されました。forループを使用する以外に、このラベル付けをどのように使用するのだろうかと思っていましたか?

<script>

js:
{
   alert("x");  
}

</script>
4

5 に答える 5

6

:とにかく私が知っているjavascriptでの用途がいくつかあります。

  1. ternary operatorif- 1 行でステートメントを評価するために使用されます。

    var x = "yes" == "yes" ? true : false;
    

    上記のコード行は、機能的に次のものと同等です。

    if("yes" == "yes"){
        var x = true;
    }
    else{
        var x = false;
    }
    
  2. コード ブロックの開始をマークする - コード ブロックに移動する

    begin:
    for(int i = 0; i < 10; i++){
        break begin;
    }
    
  3. オブジェクトリテラル - リマインダーをくれた @Ian に感謝

    var someObject= {
        item: 'some value',
        anotherItem: 2 // Can put any type of variable here
    };
    

    このタイプの表記は、JSONを使用するときによく見られます。

于 2013-04-25T14:10:32.830 に答える
3

JavaScript ではLabels [MDN]と呼ばれます。

myPrettyLabel:
{
   alert('testMe');
}

break または continue ステートメントを使用して参照できる識別子を持つステートメントを提供します。

たとえば、ラベルを使用してループを識別し、break または continue ステートメントを使用して、プログラムがループを中断するか実行を継続するかを示すことができます。

goto一般番組と同じ


ご注意ください

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


参考:SO - JavaScriptのコロン(:)は何を表しているの?

于 2013-04-25T14:12:27.090 に答える
3

それはラベル付けされたステートメントです。ラベル付きステートメントをbreakandcontinueステートメントの形式で使用できます。

outer: for (var i = 0; i < 1000; ++i) {
  for (var j = 0; j < 1000; j++) {
    if (somethingBad())
      break outer;
  }
}

内側のネストされたループから外側の反復レベルに到達できることは (めったにありませんが) 役に立ちます。何千行ものコードで使用したことはないと思います。元の質問に投稿されたコード例では、ラベルに明らかな目的はありません。

于 2013-04-25T14:09:59.210 に答える
2

これは、ラベルをマークする方法です。これは、古い「goto」を実装する機能を提供する非常に悪い習慣です。これは、順次実行のコードへの単純なジャンプです。

于 2013-04-25T14:07:25.113 に答える
-1

コロンは、ラベルを追加するために使用されます。labelの MDN ドキュメントで説明されているように:

break または continue ステートメントを使用して参照できる識別子を持つステートメントを提供します。

たとえば、ラベルを使用してループを識別し、break または continue ステートメントを使用して、プログラムがループを中断するか実行を継続するかを示すことができます。

MDN にはコード例も含まれています。

var i, j;

loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
   loop2:
   for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
      if (i == 1 && j == 1) {
         continue loop1;
      } else {
         console.log("i = " + i + ", j = " + j);
      }
   }
}

// Output is:
//   "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"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"

また、記事で述べられているように、この種のロジックは一般的にコードを理解しにくくするため、ラベルを使用する必要がないように、コードを再構築して他のタイプのフロー制御 (関数など) を使用することをお勧めします。


この構文はオブジェクト構文にも似ているため、混乱を招く可能性があることに注意してください。次に例を示します。

{ js: {1}, ... }
于 2013-04-25T14:13:22.570 に答える