为什么 + 返回一个空string?

最近我一直在尝试node.js,我发现JavaScript有一些句法逻辑,我不能包裹我的头。 这是一个我不明白的例子,我想知道这是不是一个随机的JavaScript事实,或者是否有任何逻辑。

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

数组的toString方法将返回一个string,它是所有数组元素的逗号分隔列表。

从上面的MDN参考:

当数组被表示为文本值或者在string连接中引用数组时,JavaScript会自动调用toString方法。

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

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