简介

这是写上一篇博客,遇到的问题。点击here移步上一篇博客。

详解

上一篇博客说,除了两个数值相加,其他类型相加都会转成字符串相加。

那么先控制台输出一下{}+[][]+{}看一下结果,直接上图:
16825561799839.png
一个返回0,一个返回'[object Object]',互换位置后返回的结果不一样。
空对象转成字符串是'[object Object]',空数组转成字符串是空字符串''。但是第一个返回0

再看一张图:
16825708641988.png
定义一个空对象变量a,再加空数组就返回了'[object Object]'

应该是{}+[]中的{}没有被解释器解释成空对象,又发现+[]返回的是0。所以{}在前面应该是被解释成代码块,而不是空对象。
同时也是因为运算是从左到右解释,+加号是连接两个变量的,所以{}放在+号后面就会被解释成空对象变量。同时也因为+号可以单独放在变量前使用,意为返回这个变量的数值,看上一篇博客。所以放在+号前面不一定会被解释在变量,后面一定会被解释成变量。

总结

  • 除了两个数值相加,其他类型相加都会转成字符串相加
  • 但是 + 号前面是一个直接使用的{}空对象,就会把空对象解释成代码块标志。例如{}+