[1,2] + [4,5,6][1] 如何在 JavaScript 中 = 1,25
How [1,2] + [4,5,6][1] = 1,25 in JavaScript
我从面试中得到了这个问题,
[1,2] + [4,5,6][1]
JavaScript给出答案1,25.
这是怎么回事?请解释清楚。
让我们从最后一部分开始,把它写得更冗长
var arr = [4,5,6];
var value = arr[1];
与
相同
[4,5,6][1]
并且由于数组是从零开始的,所以得到 5
,所以我们确实有
[1,2] + 5;
第一部分等于
[1,2].toString(),
并且 returns 字符串 "1,2"
因为当试图在这样的表达式中使用它时数组被转换为字符串,因为数组不能添加到数字,然后我们有
"1,2" + 5
将字符串与数字连接得到字符串,将字符串相加得到
"1,25"
分解成这样:
开始于:
[1,2] + [4,5,6][1]
首先,对每一边进行求值,由于右侧是数组初始化器和查找,因此结果为 5
:
[1,2] + 5
现在 the +
operator 开始工作。它不是为数组定义的,它做的第一件事就是尝试将其操作数转换为字符串或数字。在数组的情况下,它将是一个字符串,就好像来自 Array#toString
,它确实 Array#join
,给我们:
"1,2" + 5
当你使用 +
时,两边都是字符串,结果是字符串连接。
首先,[4,5,6][1]
的计算结果为 5
然后,+
运算符被应用于第一个参数,它是 Array
而不是 Number
,所以 javascript 假设你正在做一个字符串连接,而不是加法。你的数组 [1,2]
变成了一个字符串,即 "1,2"
。您可以通过 [1,2].toString()
.
自己查看
数字 5
现在被附加到一个字符串,因此它被转换为一个字符串,并附加在一起得到 "1,25"
。
我从面试中得到了这个问题,
[1,2] + [4,5,6][1]
JavaScript给出答案1,25.
这是怎么回事?请解释清楚。
让我们从最后一部分开始,把它写得更冗长
var arr = [4,5,6];
var value = arr[1];
与
相同[4,5,6][1]
并且由于数组是从零开始的,所以得到 5
,所以我们确实有
[1,2] + 5;
第一部分等于
[1,2].toString(),
并且 returns 字符串 "1,2"
因为当试图在这样的表达式中使用它时数组被转换为字符串,因为数组不能添加到数字,然后我们有
"1,2" + 5
将字符串与数字连接得到字符串,将字符串相加得到
"1,25"
分解成这样:
开始于:
[1,2] + [4,5,6][1]
首先,对每一边进行求值,由于右侧是数组初始化器和查找,因此结果为 5
:
[1,2] + 5
现在 the +
operator 开始工作。它不是为数组定义的,它做的第一件事就是尝试将其操作数转换为字符串或数字。在数组的情况下,它将是一个字符串,就好像来自 Array#toString
,它确实 Array#join
,给我们:
"1,2" + 5
当你使用 +
时,两边都是字符串,结果是字符串连接。
首先,[4,5,6][1]
的计算结果为 5
然后,+
运算符被应用于第一个参数,它是 Array
而不是 Number
,所以 javascript 假设你正在做一个字符串连接,而不是加法。你的数组 [1,2]
变成了一个字符串,即 "1,2"
。您可以通过 [1,2].toString()
.
数字 5
现在被附加到一个字符串,因此它被转换为一个字符串,并附加在一起得到 "1,25"
。