为什么[] + []返回一个空字符串?

Jor*_*ren 4 javascript node.js

最近我一直在试验node.js,我发现javascript有一些语法逻辑,我无法解决这个问题.这是一个我不明白的例子,我想知道这是否只是一个随机的javascript事实,或者是否有任何逻辑.

Pet*_*tai 8

加号是算术加或字符串连接.在这种情况下,空数组将转换为空字符串[] + [].

Array的toString方法将返回一个字符串,该字符串是所有数组元素的逗号分隔列表.

从上面的MDN参考:

当数组要表示为文本值或在字符串连接中引用数组时,JavaScript会自动调用toString方法.

自动类型转换的相同想法是为什么true + true === 2,类型转换是许多棘手的JavaScript测验的基础,就像这个.

  • +1基本上是正确的答案.正确地说,数组被_converted_到字符串(通过调用`toPrimitive()`),而不是强制转换.请参阅[EcmaScript规范](http://es5.github.io/#x11.6.1) (3认同)