2011-09-14 13 views
258

Nie mogę otoczyć mojego umysłu wokół tego dziwactwa.Dlaczego [5,6,8,7] [1,2] = 8 w JavaScript?

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

wiem [1,2,3] + [1,2] = "1,2,31,2", ale nie mogę znaleźć tego typu lub operacja jest wykonywana.

Odpowiedz

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

Drugi [...] nie może być tablicą, więc operacja Tablica dolnym. A zawartość operacji indeksu dolnego nie jest rozdzieloną listą operandów, ale pojedynczym wyrażeniem.

Przeczytaj więcej o operatorze przecinka here.

+4

poprawnych .. Ostatni Indeks wykorzystywanych .. Więcej przykładów: [1,2,3,4, 5,6] [1,2,3] === [1,2,3,4,5,6] [3]; [1,1,1,1,1, 1] [3] === [1,1,1,1,1, 1] [1,2,3]; w ten sposób [1,1,1,1,1] [3] == 5 – mastak

101

Ponieważ (1,2) == 2. Natknąłeś się na comma operator (lub simpler explanation here).

O ile przecinki nie pojawiają się na liście deklaracji, liście parametrów, obiekcie lub tablicy, działają jak każdy inny operator binarny. x, y ocenia x, a następnie ocenia y i ustępuje jako wynik.

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

Oto druga skrzynka tj [1,2,3] staje [3] czyli ostatniego elementu więc wynik będzie 4 na przykład, jeśli trzymać [1,2,3,4,5,6] w tablicy

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

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

podobnie

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

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

Ale kiedy umieścisz operator + pomiędzy, to drugi kwadratowy nawias nie jest wymieniony na indeks. Jest to raczej innej tablicy Dlatego masz

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

tj

var arr_1=[1,2,3]; 

var arr_2=[1,2]; 

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

Zasadniczo w pierwszym przypadku jest on używany jako indeks tablicy i w drugim przypadku jest sama tablica.

1

Druga tablica jest wskaźnikiem do pierwszej tablicy. Otrzyma wartość dla każdego elementu w pierwszej tablicy. Np

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

pozwala wywołać firstArray = ["a","b","c","d","e"] druga tablica będzie pierwszy punkt B ze firstArray[1] = "b". Następnie drugi wskaźnik wskaże na c z powodu firstArray[2] = "c". Następnie ostatni wskaźnik wskaże na d z powodu firstArray[3] = "d". Dlatego przyjmuje wartość końcową, czyli "d". Można spojrzeć na to w ten sposób:

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

Albo jeśli zmienisz sekwencję jak tego

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