我是JavaScript的新手。我有这样的代码:
<script type="text/javascript">
console.log( [] + {} );
</script>
在我的Google Chrome浏览器上记录:
[object Object]
它看起来与我有关!并做这样的事情:
<script type="text/javascript">
console.log( {} + {} );
</script>
产生:
[object Object][object Object]
在这两种情况下,究竟发生了什么?为什么[]
,{}
将这两个结果添加到objects
数组中?
提前致谢。
答案 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)
[]
是一个空数组,它被转换为字符串(因为连接运算符)。 {}
是一个空对象。