2017-04-17 4 views
3

私はクローム(およびFF)コンソールで何かをしようとJS REPLは意外な方法でいくつかの式を評価することを実現した。どのように{} "123"はJavascript REPLで有効な式ですか?

{} "123" 
-> "123" 


{} 123 
-> 123 

{} [] 
-> [] 

なぜですか?また、前の動作と多少矛盾します:

{}{} 
-> undefined 

これらは有効な表現であるという背後にある論理は何ですか?

答えて

9
  1. セミコロンはJavascriptではオプションです。そう:

{} "123"は、最後の式("123")の値を得{}; "123";と同じです。

  1. {}は、オブジェクトリテラルまたはブロックの両方になります。

が暗黙的にオブジェクトリテラル(割り当てもキー値のペアもなし...)と解釈されない場合、インタープリタはそれをブロックとして解析します。

{ 
    // block with no expressions 
}; 
{ 
    // block with no expressions 
}; 

が空きブロックの値であるundefinedを得た:

{}{}と同じです。

関連する問題