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

Ant*_*t's 2 javascript arrays

可能重复:
CodeMash 2012的"Wat"演讲中提到的这些奇怪的JavaScript行为的解释是什么?

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

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

在我的Google Chrome浏览器日志中:

[object Object]
Run Code Online (Sandbox Code Playgroud)

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

<script type="text/javascript">
console.log( {} + {} );
</script>
Run Code Online (Sandbox Code Playgroud)

确实生产:

[object Object][object Object]
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

T.J*_*der 11

当您使用非数字+运算符时,您正在进行字符串连接,因此操作数将转换为字符串.空数组变为空字符串,因为它是一个隐式调用join,没有条目,join返回一个空字符串; 一个物体变成了"[object Object]".

所以

console.log( [] + {} );
Run Code Online (Sandbox Code Playgroud)

......归结为

console.log( String([]) + String({}) );
Run Code Online (Sandbox Code Playgroud)

......归结为......

console.log( "" + "[object Object]");
Run Code Online (Sandbox Code Playgroud)