Odpowiedzi:
[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`.
Drugi [...]nie może być tablicą, więc jest to operacja na indeksie tablicowym. A zawartość operacji indeksu dolnego nie jest ograniczoną listą operandów, ale pojedynczym wyrażeniem.
Przeczytaj więcej o przecinku tutaj .
Ponieważ (1,2) == 2. Natknąłeś się na operator przecinka (lub prostsze wyjaśnienie tutaj ).
O ile przecinki nie pojawiają się na liście deklaracji, liście parametrów, literale obiektu lub tablicy, działają one jak każdy inny operator binarny. x, yocenia x, a następnie ocenia yi daje to w rezultacie.
[1,2,3,4,5,6][1,2,3];
Tutaj drugie pole, tj. [1,2,3]Staje się, [3]tj. Ostatni element, więc wynik wyniesie 4, na przykład, jeśli będziesz trzymał [1,2,3,4,5,6]w tablicy
var arr=[1,2,3,4,5,6];
arr[3]; // as [1,2,3] in the place of index is equal to [3]
podobnie
*var arr2=[1,2,3,4,5,6];
// arr[1,2] or arr[2] will give 3*
Ale kiedy umieścisz operatora + pomiędzy nimi, drugi nawias kwadratowy nie służy do wspominania o indeksie. To raczej kolejna tablica. Właśnie dlatego
[1,2,3] + [1,2] = 1,2,31,2
to znaczy
var arr_1=[1,2,3];
var arr_2=[1,2];
arr_1 + arr_2; // i.e. 1,2,31,2
Zasadniczo w pierwszym przypadku jest on używany jako indeks tablicy, aw drugim przypadku sam jest tablicą.