简介
这是写上一篇博客,遇到的问题。点击here移步上一篇博客。
详解
上一篇博客说,除了两个数值相加,其他类型相加都会转成字符串相加。
那么先控制台输出一下{}+[]
和[]+{}
看一下结果,直接上图:
一个返回0
,一个返回'[object Object]'
,互换位置后返回的结果不一样。
空对象转成字符串是'[object Object]'
,空数组转成字符串是空字符串''
。但是第一个返回0
。
再看一张图:
定义一个空对象变量a
,再加空数组就返回了'[object Object]'
。
应该是{}+[]
中的{}
没有被解释器解释成空对象,又发现+[]
返回的是0
。所以{}
在前面应该是被解释成代码块,而不是空对象。
同时也是因为运算是从左到右解释,+
加号是连接两个变量的,所以{}
放在+
号后面就会被解释成空对象变量。同时也因为+
号可以单独放在变量前使用,意为返回这个变量的数值,看上一篇博客。所以放在+
号前面不一定会被解释在变量,后面一定会被解释成变量。
总结
- 除了两个数值相加,其他类型相加都会转成字符串相加
- 但是 + 号前面是一个直接使用的
{}
空对象,就会把空对象解释成代码块标志。例如{}+