`{} + 1 === 1`和`({})+ 1 ===“[object Object] 1”`。那里发生了什么?

时间:2014-03-15 02:15:29

标签: javascript

试试这个,打开控制台:

{} + 1
> 1

({}) + 1
> "[object Object]1"`

那鸭子在那里发生了什么?添加了哪些额外括号?

1 个答案:

答案 0 :(得分:11)

{} + 1

被读作"空代码块" + 1

({}) + 1

是"对象" + 1

例如,请查看仅{}({})之间的区别。至于代码块是什么:

{
    // any code here is valid, this is an anonymous block
}

{何时定义代码块与对象?如果您与函数语句与函数表达式的规则相似,那么相信在这种情况下它们完全相同:

  • 如果{位于一行的开头,那么它就是一个代码块
  • 它启动对象的任何地方