2013-07-21 161 views
4

最近我一直在用node.js进行试验,并且发现javascript有一些句法逻辑,我无法包裹头部。这是一个我不明白的例子,我想知道这是不是一个随机的JavaScript事实,或者是否有任何逻辑。为什么[] + []返回空字符串?

回答

8

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

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

从MDN参考上面的:

的JavaScript自动调用toString方法时的阵列被表示为文本值或当一个阵列被在一个字符串连接提及。

自动类型转换的同样的想法就是为什么true + true === 2,并类型转换为许多棘手的JavaScript测验像this one的基础。

+3

+1本质上是正确的答案。正确地说,数组被转换为字符串(通过调用'toPrimitive()'),而不是转换。请参阅[EcmaScript规范](http://es5.github.io/#x11.6.1) –

+0

@TedHopp - 感谢您的收获。稍微扩大了答案。 –

3

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

相关问题