为什么{}“123”是Javascript REPL中的有效表达式?

时间:2017-04-17 20:14:47

标签: javascript

我在Chrome(和FF)控制台上尝试了一些东西,并意识到JS REPL以令人惊讶的方式评估了一些表达式:

{} "123" 
-> "123"


{} 123 
-> 123

{} [] 
-> []

为什么?此外,与以前的行为有些不一致:

{}{} 
-> undefined

这些是有效表达的事实背后的逻辑是什么?

1 个答案:

答案 0 :(得分:9)

  1. 分号在Javascript中是可选的。所以:
  2. {} "123"{}; "123";相同,后者生成最后一个表达式("123")的值。

    1. {}可以是对象文字或块。
    2. 如果{}未被隐式地视为对象文字(没有赋值或没有键值对......),则解释器会将其解析为块。

      {}{}与:

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

      产生undefined,这是空块的值。