281 votes

Pourquoi est-ce que [5,6,8,7] [1,2] = 8 en Javascript

Je ne peux pas envelopper mon esprit autour de cette bizarrerie.

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

Je connais [1,2,3] + [1,2] = 1,2,31,2 , mais je ne peux pas trouver quel type ou opération est en cours d'exécution.

389voto

Lightness Races in Orbit Points 122793
 [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`.
 

Le second [...] ne peut pas être un tableau, donc c'est une opération d'indice de tableau. Et le contenu d'une opération d'indice n'est pas une liste délimitée d'opérandes, mais une seule expression.

En savoir plus sur l'opérateur virgule ici .

110voto

Mike Samuel Points 54712

Parce qu' (1,2) == 2. Vous avez trébuché à travers l' opérateur virgule (ou plus simple explication ici).

À moins que des virgules apparaissent dans une déclaration de liste de, liste de paramètres, l'objet ou littéral de tableau, ils agissent comme n'importe quel autre opérateur binaire. x, y évalue x, puis évalue y et les rendements que comme le résultat.

53voto

Joel Alejandro Points 3074

Il prend le dernier élément de la deuxième liste en tant qu'index. Alors:

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

21voto

Imdad Points 2904
[1,2,3,4,5,6][1,2,3];

Voici la deuxième zone, c'est à dire [1,2,3] devient [3] c'est à dire le dernier élément, alors le résultat sera de 4 par exemple, si vous gardez [1,2,3,4,5,6] dans un tableau

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

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

de la même façon

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

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

Mais quand vous placez un opérateur + dans entre ensuite à la deuxième place du support n'est pas pour la mention de l'indice. C'est plutôt un autre tableau C'est pourquoi vous obtenez

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

c'est à dire

var arr_1=[1,2,3];

var arr_2=[1,2];

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

Essentiellement dans le premier cas, il est utilisé comme index de tableau, et dans le deuxième cas, il est lui-même un tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X