Відповіді:
[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
В основному в першому випадку він використовується як індекс масиву, а в другому - це сам масив.