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

4

最近我一直在尝试使用node.js,发现javascript有一些语法逻辑让我难以理解。这是一个我不理解的例子,我想知道这是否只是javascript的随机特性,还是其中有任何逻辑可循。

2个回答

8
加号可以用于算术加法或字符串拼接。当执行 [] + [] 时,空数组会被转换成空字符串。
数组的 toString 方法会返回一个由所有元素组成的逗号分隔的字符串。
参考 MDN 文档:

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

同样是自动类型转换,这就是为什么 true + true === 2,类型转换也是许多棘手的 JavaScript 测验的基础,比如这个

3
对于基本正确的回答,点赞。严格来说,数组是通过调用 toPrimitive() 方法将其转换为字符串而非强制转换成字符串。请参考 EcmaScript 规范 - Ted Hopp
@TedHopp - 感谢您的指正。我稍微扩展了答案。 - Peter Ajtai

3

对于非原始类型,比如数组,要应用加法,必须将其转换为原始值。ToPrimitive 将调用非原始类型的 toString() 方法。因此,在这种情况下,[] 变成了 "",因此结果是 ""。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接