2016-09-23 3 views
1

次のコードの意味は? (これは、JSONではない - それはJSインタプリタによりエラーが発生しないコードである)Javascriptの奇妙な構文は動作しますが、それはどうですか?

foo: 5 

質問理由は次の通りです。

var func =() => { foo: 1 }; 

FUNC()未定義戻り、上記のコードが失敗しない:矢印の関数の例ではJSONコードブロック構文の混同を示すものがあります。私はちょうどfoo:5コードをjsモジュールの唯一のコードとして入れようとしました - それはうまくいきます...私は ':'演算子についてjのラベルについても知らない。

+1

それはラベルです。それだけです。 –

+0

[矢印関数からのオブジェクトの返却]の可能な複製(http://stackoverflow.com/questions/35551000/return-object-from-arrow-function) –

答えて

2

JavaScriptラベル:documentation hereです。

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

JavaScriptにはgoto文はありません。ただし、breakまたはcontinueのラベルしか使用できません。

(MDNから)使用例

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++; 
} 
+0

引用されたドキュメントによると、JSラベルはループ専用です。私の例では、ラベルに続くループはありません。しかしそれはまだ法的なコードです。 – dzilbers

+0

@dzilbers文書を読み続けると、ブロックを使用できると述べられています(「区切り付きのラベル付きブロックの使用」を参照)。 Javascriptパーサーは式が 'label'の後ろに来ると期待します。あなたが厳格なモードに入っていない限り、それは何が続くかを制限します。 –

+0

私は今MDNとラベル付きステートメントに関するECMA仕様を見てきました。なぜなら、ループやブロックに隣接していないラベルは、その用途に理由がなければまったく受け入れられないのですが、それは本当です... – dzilbers

関連する問題