我想要解释一下这段代码:(4 + [] + 8)

时间:2017-08-17 16:17:32

标签: javascript

执行时

console.log( (4 + [] + 8) )

我得到48的结果,当我单独执行[]时,它会给0。它是如何工作的?

2 个答案:

答案 0 :(得分:3)

因为这是numberarray的总和,所以javascript会将两者都转换为字符串。

因此:

'4' + '' + '8' = '48'(请注意,结果为string,而不是number

如果向阵列添加更多元素,它将像这样工作

4 + [1, 2] + 8 = '41,28'

这是因为默认情况下,数组通过将值与,连接成为字符串。

另一个例子

4 + [1, 2, 3, 4, 5] + 8 = 41,2,3,4,58

注意:如果您尝试对两个arrays求和,它们也将成为字符串,因为javascript没有用于求和数组的本机实现。

[1, 2] + [3, 4] = '1,23,4'

答案 1 :(得分:0)

喜欢在评论中解释。 当您将数组上的+运算符用于不同类型的变量时,js引擎将通过[] .toString()将其称为字符串。 在字符串中添加数字也会将数字转换为字符串。