在Javascript中,[] + {}等于[object Object]?怎么样?

时间:2012-05-05 12:43:08

标签: javascript arrays

  

可能重复:
  What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?

我是JavaScript的新手。我有这样的代码:

<script type="text/javascript">
console.log( []  + {} );
</script>

在我的Google Chrome浏览器上记录:

[object Object]

它看起来与我有关!并做这样的事情:

<script type="text/javascript">
console.log( {} + {} );
</script>

产生:

[object Object][object Object]

在这两种情况下,究竟发生了什么?为什么[]{}将这两个结果添加到objects数组中?

提前致谢。

3 个答案:

答案 0 :(得分:10)

当您使用带有非数字的+ operator时,您正在进行字符串连接,因此操作数将转换为字符串。空数组becomes an empty string,因为它是对join的隐式调用,并且没有条目,join返回空字符串;对象becomes "[object Object]"

所以

console.log( [] + {} );

......归结为

console.log( String([]) + String({}) );

......归结为

console.log( "" + "[object Object]");

答案 1 :(得分:2)

您正在将对象添加到数组中 - 因此它被放在最后。当你用2个对象应用+时,只有有意义的操作是转换为字符串并连接它

答案 2 :(得分:1)

[]是一个空数组,它被转换为字符串(因为连接运算符)。 {}是一个空对象。