Ответы:
[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,2) == 2. Вы наткнулись на оператор запятой (или более простое объяснение здесь ).
Если запятые не появляются в списке объявлений, списке параметров, объекте или литерале массива, они действуют как любой другой двоичный оператор. x, yоценивает x, затем оценивает yи выдает это как результат.
[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
По сути, в первом случае он используется как индекс массива, а во втором случае он сам является массивом.