为什么在Javascript中输入({} + {})时显示对象对象?

时间:2015-08-02 17:29:39

标签: javascript

为什么会这样?

  

{} + {}输出 - NaN

     

({} + {})输出 -       ''[object Object] [object Object]''

为什么要显示那种结果?

1 个答案:

答案 0 :(得分:0)

当你以某种方式写{}时,如果"重复"回答说是正确的,它可能被解释为代码块而不是空对象。空块没有return语句,因此返回undefined

undefined + undefined返回NaN,因为它尝试在两个非数字值之间进行数学加法。当您撰写{} + {}但未对结果执行任何操作时,Chrome会再次评估+作为添加,并将{}评估为未定义。

但是,只要您对结果实际执行某些操作,行为就会有所不同,因为浏览器会理解您正在使用隐式对象声明语法。如果你说var x = {} + {},Chrome会创建两个对象并尝试将它们转换为可以与+运算符一起使用的值。因此它将对象转换为字符串表示形式并将字符串连接在一起。

当你使用括号时会发生同样的事情,因为在括号内不能存在块,所以它不能将{}误认为是空块。

PS:我一开始就错了,我现在正在读取其他答案。