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 |
基本上,在第一种情况下,它用作数组的索引,在第二种情况下,它本身就是数组。