it-swarm.cn

为什么JavaScript中的[5,6,8,7] [1,2] = 8?

我无法绕过这个怪癖。

[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3

我知道[1,2,3] + [1,2] = "1,2,31,2",但我找不到正在执行的类型或操作。

271
Joe
[1,2,3,4,5,6][1,2,3];
      ^         ^
      |         |
    array       + — array subscript access operation,
                    where index is `1,2,3`,
                    which is an expression that evaluates to `3`.

第二个[...]不能是一个数组,所以它是一个数组下标操作。并且下标操作的内容不是操作数的分隔列表,而是单个表达式。

阅读有关逗号运算符的更多信息 此处

383
Lightness Races in Orbit

因为(1,2) == 2。你偶然发现了 逗号运算符 (或 这里更简单的解释 )。

除非逗号列表,参数列表,对象或数组文字中出现逗号,否则它们的行为与任何其他二元运算符相同。 x, y评估x,然后计算y并将结果作为结果。

105
Mike Samuel
[1,2,3,4,5,6][1,2,3];

这里第二个框,即[1,2,3]变为[3],即最后一项,所以结果将为4,例如,如果你将[1,2,3,4,5,6]保存在一个数组中

var arr=[1,2,3,4,5,6];

arr[3]; // as [1,2,3] in the place of index is equal to [3]

同样

*var arr2=[1,2,3,4,5,6];

 // arr[1,2] or arr[2] will give 3*

但是当你在其间放置一个+运算符时,第二个方括号不是为了提及索引。这是另一个阵列这就是你得到的原因

[1,2,3] + [1,2] = 1,2,31,2

即.

var arr_1=[1,2,3];

var arr_2=[1,2];

arr_1 + arr_2; // i.e.  1,2,31,2

基本上在第一种情况下,它被用作数组的索引,在第二种情况下,它本身就是一个数组。

21
Imdad