在 stackoverflow 上有人提问:arrays - Why does [1,2] + [3,4] = "1,23,4" in JavaScript?
问题
我想将一个数组追加到另一个数组的后面,于是我在 firebug 编写如下代码:
[1,2] + [3,4]
但是,出乎意料,它却输出了:
"1,23,4"
而没有输出我期望的:
[1,2,3,4]
这是怎么回事呢?为什么 [1,2]
+ [3,4]
不等于 [1,2,3,4]
?
类似问题还有:为什么 ++[[]][+[]]+[+[]] = 10?
解答
JavaScript 的 +
运算符有两个目的:
- 将两个数相加;
- 将两个字符串连接。
规范并没有定义 +
运算符在数组上的行为,所以javascript
首先 把数组转换成字符串,然后在字符串上进行 +
运算。
如果想连接两个数组,可以使用数组的