
这是写上一篇博客,遇到的问题。点击here移步上一篇博客。
上一篇博客说,除了两个数值相加,其他类型相加都会转成字符串相加。
那么先控制台输出一下{}+[]和[]+{}看一下结果,直接上图:

一个返回0,一个返回'[object Object]',互换位置后返回的结果不一样。
空对象转成字符串是'[object Object]',空数组转成字符串是空字符串''。但是第一个返回0。
再看一张图:

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