while switch operator length for concatenar javascript

switch - ¿Por qué[5,6,8,7][1,2]=8 en JavaScript?



switch javascript (4)

No puedo envolver mi mente alrededor de esta peculiaridad.

[1,2,3,4,5,6][1,2,3]; // 4 [1,2,3,4,5,6][1,2]; // 3

[1,2,3] + [1,2] = "1,2,31,2" , pero no puedo encontrar qué tipo u operación se está realizando.


La segunda matriz es un puntero a la primera matriz. Obtendrá valor para cada elemento en la primera matriz. Por ejemplo:

var arr=["a","b","c","d","e"][1,2,3]

firstArray = ["a","b","c","d","e"] a firstArray = ["a","b","c","d","e"] la segunda matriz apuntará primero b porque firstArray[1] = "b" . Luego, el segundo puntero apuntará a c debido a firstArray[2] = "c" . Luego, el último puntero apuntará a d debido a firstArray[3] = "d" . Por lo tanto, toma el valor final, que es "d". Puedes verlo de esta manera:

var firstArray=["a","b","c","d"] var arr = firstArray[1,2,3] console.log(arr) //this will be equal to "d"

O si cambias tu secuencia como esta

var firstArray=["a","b","c","d"] var arr = firstArray[1,2,0] console.log(arr) //this will be equal to "a"


Porque (1,2) == 2 . Has tropezado 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 da como resultado.


[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 here .


[1,2,3,4,5,6][1,2,3];

Aquí la segunda casilla, es decir, [1,2,3] convierte en [3] es decir, el último elemento, por lo que el resultado será 4, por ejemplo, si mantiene [1,2,3,4,5,6] en 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 + entre, entonces 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.