1。{}+[]
给出0
2。[]+{}
给出了[object object]
,我知道1和2是如何出现的,但是
3。{}+[]+{}
给出[object object][object object]
怎么不应该0[object object]
?
答案 0 :(得分:0)
使用console.log
时,它会执行toString
-使用{} + []
时会给出[object Object]
。
console.log({} + []);
(注意:只需将{} + []
放入开发人员工具控制台即可得到0
,因为未调用toString
。)
这就是为什么会产生[object Object][object Object]
的原因:
console.log({} + [] + {});
由于要将对象(由{} + []
形成)添加到另一个对象,并且由于使用的是+
串联运算符,因此强制toString
-因此,您重新添加[objectObject]
和[object Object]
,得到[object Object][object Object]
。
注意:以上所有内容均在Chrome上。在Firefox和其他可能的版本中,它们的工作方式不同,这就是为什么问题中的某些内容有所不同。