Por que [5,6,8,7] [1,2] = 8 em JavaScript?


278

Eu não consigo entender essa peculiaridade.

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

Eu sei [1,2,3] + [1,2] = "1,2,31,2", mas não consigo encontrar que tipo ou operação está sendo executada.

Respostas:


387
[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`.

O segundo [...]não pode ser uma matriz, portanto é uma operação de subscrito da matriz. E o conteúdo de uma operação subscrita não é uma lista delimitada de operandos, mas uma única expressão.

Leia mais sobre o operador de vírgula aqui .


7
correto .. último índice usado .. mais exemplos: [1,2,3,4,5,6] [1,2,3] === [1,2,3,4,5,6] [3] ; [1,1,1,5,1,1] [3] === [1,1,1,5,1,1] [1,2,3]; desta maneira [1,1,1,5,1,1] [3] == 5
mastak 14/09/11

Leia mais sobre o operador de vírgula aqui é uma declaração enganosa , pois a entrada wiki vinculada fala sobre o operador de vírgula no contexto C e C ++, e aqui você tem JavaScript !!
Nawaz


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

Aqui a segunda caixa, ou seja, [1,2,3]torna-se [3]o último item, portanto o resultado será 4, por exemplo, se você mantiver [1,2,3,4,5,6]uma matriz

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

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

similarmente

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

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

Mas quando você coloca um operador + no meio, o segundo colchete não é para mencionar o índice. É uma outra matriz É por isso que você obtém

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

ie

var arr_1=[1,2,3];

var arr_2=[1,2];

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

Basicamente, no primeiro caso, é usado como índice de matriz e, no segundo caso, é ele próprio uma matriz.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.