I can’t wrap my mind around this quirk.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
I know [1,2,3] + [1,2] = “1,2,31,2”, but I can’t find what type or operation is being performed.
[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`.
[...] cannot be an array, so it’s an array subscript operation. And the contents of a subscript operation are not a delimited list of operands, but a single expression.
Read more about the comma operator here.
Unless commas appear in a declaration list, parameter list, object or array literal, they act like any other binary operator.
x, y evaluates
x, then evaluates
y and yields that as the result.
Here the second box i.e.
 i.e. the last item so the result will be 4
for example if you keep
[1,2,3,4,5,6] in an array
var arr=[1,2,3,4,5,6]; arr; // as [1,2,3] in the place of index is equal to 
*var arr2=[1,2,3,4,5,6]; // arr[1,2] or arr will give 3*
But when you place a + operator in between then the second square bracket is not for mentioning index. It is rather another array
That’s why you get
[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
Basically in the first case it is used as index of array and in the second case it is itself an array.