为什么会这样?
{} + {}输出 - NaN
({} + {})输出 - ''[object Object] [object Object]''
为什么要显示那种结果?
答案 0 :(得分:0)
当你以某种方式写{}
时,如果"重复"回答说是正确的,它可能被解释为代码块而不是空对象。空块没有return语句,因此返回undefined
。
undefined + undefined
返回NaN,因为它尝试在两个非数字值之间进行数学加法。当您撰写{} + {}
但未对结果执行任何操作时,Chrome会再次评估+
作为添加,并将{}
评估为未定义。
但是,只要您对结果实际执行某些操作,行为就会有所不同,因为浏览器会理解您正在使用隐式对象声明语法。如果你说var x = {} + {}
,Chrome会创建两个对象并尝试将它们转换为可以与+
运算符一起使用的值。因此它将对象转换为字符串表示形式并将字符串连接在一起。
当你使用括号时会发生同样的事情,因为在括号内不能存在块,所以它不能将{}
误认为是空块。