Why does [5,6,8,7][1,2] = 8 in JavaScript?
我无法为这个怪癖着迷。
1 2  | [1,2,3,4,5,6][1,2,3]; // 4 [1,2,3,4,5,6][1,2]; // 3  | 
我知道
1 2 3 4 5 6  | [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`.  | 
第二个
在此处了解有关逗号运算符的更多信息。
因为
除非逗号出现在声明列表,参数列表,对象或数组文字中,否则它们的作用类似于任何其他二进制运算符。 
1  | [1,2,3,4,5,6][1,2,3];  | 
在这里第二个框,即
例如,如果您将
1 2 3  | var arr=[1,2,3,4,5,6]; arr[3]; // as [1,2,3] in the place of index is equal to [3]  | 
类似地
1 2 3  | *var arr2=[1,2,3,4,5,6]; // arr[1,2] or arr[2] will give 3*  | 
但是,当您在它们之间放置一个+运算符时,第二个方括号就不会提及索引。它是另一个数组
这就是为什么你得到
1  | [1,2,3] + [1,2] = 1,2,31,2  | 
即
1 2 3 4 5  | var arr_1=[1,2,3]; var arr_2=[1,2]; arr_1 + arr_2; // i.e. 1,2,31,2  | 
基本上,在第一种情况下,它用作数组的索引,在第二种情况下,它本身就是数组。