No puedo pensar en este capricho.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
Lo sé [1,2,3] + [1,2] = "1,2,31,2"
, pero no puedo encontrar qué tipo u operación se está realizando.
fuente
No puedo pensar en este capricho.
[1,2,3,4,5,6][1,2,3]; // 4
[1,2,3,4,5,6][1,2]; // 3
Lo sé [1,2,3] + [1,2] = "1,2,31,2"
, pero no puedo encontrar qué tipo u operación se está realizando.
[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`.
El segundo [...]
no puede ser una matriz, por lo que es una operación de subíndice de matriz. Y el contenido de una operación de subíndice no es una lista delimitada de operandos, sino una sola expresión.
Lea más sobre el operador de coma aquí .
Debido (1,2) == 2
. Te has topado con el operador de coma (o una explicación más simple aquí ).
A menos que las comas aparezcan en una lista de declaración, lista de parámetros, objeto o matriz literal, actúan como cualquier otro operador binario. x, y
evalúa x
, luego evalúa y
y produce eso como resultado.
[1,2,3,4,5,6][1,2,3];
Aquí el segundo cuadro, es decir, se [1,2,3]
convierte en [3]
el último elemento, por lo que el resultado será 4, por ejemplo, si mantiene [1,2,3,4,5,6]
una matriz
var arr=[1,2,3,4,5,6];
arr[3]; // as [1,2,3] in the place of index is equal to [3]
similar
*var arr2=[1,2,3,4,5,6];
// arr[1,2] or arr[2] will give 3*
Pero cuando coloca un operador + en el medio, el segundo corchete no es para mencionar el índice. Es más bien otra matriz. Es por eso que obtienes
[1,2,3] + [1,2] = 1,2,31,2
es decir
var arr_1=[1,2,3];
var arr_2=[1,2];
arr_1 + arr_2; // i.e. 1,2,31,2
Básicamente, en el primer caso se usa como índice de matriz y en el segundo caso es en sí misma una matriz.