Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“为什么{}”;123“;Javascript REPL中的表达式是否有效?_Javascript - Fatal编程技术网

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

“为什么{}”;123“;Javascript REPL中的表达式是否有效?,javascript,Javascript,我在Chrome(和FF)控制台中尝试了一些东西,发现JS REPL以一种令人惊讶的方式计算了一些表达式: {} "123" -> "123" {} 123 -> 123 {} [] -> [] 等等 为什么呢?另外,与之前的行为有些不一致: {}{} -> undefined 这些都是有效表达式这一事实背后的逻辑是什么 分号在Javascript中是可选的。因此: {}“123”与{}相同;"123";生成最后一个表达式的值(“123”) {}既可以是

我在Chrome(和FF)控制台中尝试了一些东西,发现JS REPL以一种令人惊讶的方式计算了一些表达式:

{} "123" 
-> "123"


{} 123 
-> 123

{} [] 
-> []
等等

为什么呢?另外,与之前的行为有些不一致:

{}{} 
-> undefined
这些都是有效表达式这一事实背后的逻辑是什么

  • 分号在Javascript中是可选的。因此:
  • {}“123”
    {}相同;"123";
    生成最后一个表达式的值(
    “123”

  • {}
    既可以是对象文字,也可以是块
  • 如果
    {}
    未隐式地作为对象文本(无赋值或无键值对…),则解释器将其作为块进行解析

    {}{}
    与以下内容相同:

    {
      // block with no expressions
    };
    {
      // block with no expressions
    };
    
    产生
    未定义的
    ,它是空块的值