关于 Chrome 中 js 空对象类型强制转换的疑问

当空对象和另一个数据求和的时候,如

{} + []

前面的空对象一般会当成一个空的代码块处理,变成

+ [] // 0

所以当空对象和空对象求和的时候

{} + {}

空对象当成代码块处理就等于

+ {}

结果应该是 NaN。

但是在 Chrome 中

{} + {} // "[object Object][object Object]"

显然是第一个空对象没有当成代码块处理。

在其他浏览器如 Firefox 或者 IE 中

{} + {} 

结果都是 NaN。

Chrome 中为什么不一样,不太理解。

阅读 1.4k
1 个回答

因为{} + {}有不同的解析方式

  1.    {
       }
       +{}

    前面是一个空代码块

  2. 前后都当成一个对象进行解析,最后就是调用各自的toString方法,进行字符串拼接

为了避免以上歧义,可以使用({} + {}),就可以达到一致了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题