当空对象和另一个数据求和的时候,如
{} + []
前面的空对象一般会当成一个空的代码块处理,变成
+ [] // 0
所以当空对象和空对象求和的时候
{} + {}
空对象当成代码块处理就等于
+ {}
结果应该是 NaN。
但是在 Chrome 中
{} + {} // "[object Object][object Object]"
显然是第一个空对象没有当成代码块处理。
在其他浏览器如 Firefox 或者 IE 中
{} + {}
结果都是 NaN。
Chrome 中为什么不一样,不太理解。
因为
{} + {}
有不同的解析方式前面是一个空代码块
toString
方法,进行字符串拼接为了避免以上歧义,可以使用
({} + {})
,就可以达到一致了