it-swarm.it

Perché [5,6,8,7] [1,2] = 8 in JavaScript?

Non riesco a pensare a questa stranezza.

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

Lo so [1,2,3] + [1,2] = "1,2,31,2", ma non riesco a trovare il tipo o l'operazione in corso.

274
Joe
[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`.

Il secondo [...] non può essere un array, quindi è un'operazione di sottoscrizione di array. E il contenuto di un'operazione di sottoscrizione non è un elenco delimitato di operandi, ma una singola espressione.

Ulteriori informazioni sull'operatore virgola qui .

384

Perché (1,2) == 2. Ti sei imbattuto in operatore virgola (o spiegazione più semplice qui ).

A meno che le virgole non compaiano in un elenco di dichiarazioni, in un elenco di parametri, nell'oggetto o nell'array letterale, si comportano come qualsiasi altro operatore binario. x, y valuta x, quindi valuta y e lo restituisce come risultato.

105
Mike Samuel
[1,2,3,4,5,6][1,2,3];

Qui la seconda casella, cioè [1,2,3] diventa [3] ovvero l'ultimo elemento, quindi il risultato sarà 4, ad esempio se mantieni [1,2,3,4,5,6] in un array

var arr=[1,2,3,4,5,6];

arr[3]; // as [1,2,3] in the place of index is equal to [3]

allo stesso modo

*var arr2=[1,2,3,4,5,6];

 // arr[1,2] or arr[2] will give 3*

Ma quando si posiziona un operatore + in mezzo, la seconda parentesi quadra non è per menzionare l'indice. È piuttosto un altro array Ecco perché ottieni

[1,2,3] + [1,2] = 1,2,31,2

cioè.

var arr_1=[1,2,3];

var arr_2=[1,2];

arr_1 + arr_2; // i.e.  1,2,31,2

Fondamentalmente nel primo caso è usato come indice di array e nel secondo caso è esso stesso un array.

21
Imdad