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

时间:2013-07-21 17:37:03

标签: javascript node.js

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

2 个答案:

答案 0 :(得分:8)

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

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

来自上面的MDN参考:

  

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

自动类型转换的相同想法是true + true === 2的原因,类型转换是许多棘手的JavaScript测验的基础,例如this one

答案 1 :(得分:3)

对于非基本类型(如数组),要应用加法,必须将其转换为基元,ToPrimitive,将为非基本类型调用toString()。因此,在这种情况下,[]变为“”,因此成为“”。