2011-09-14 26 views
258

Tôi không thể che giấu tâm trí của mình xung quanh điều này.Tại sao [5,6,8,7] [1,2] = 8 trong JavaScript?

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

Tôi biết [1,2,3] + [1,2] = "1,2,31,2", nhưng tôi không thể tìm thấy loại hoặc hoạt động nào đang được thực hiện.

Trả lời

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

Thứ hai [...] không thể là mảng, do đó, đó là thao tác chỉ số mảng. Và nội dung của một hoạt động subscript không phải là một danh sách được phân tách các toán hạng, mà là một biểu thức duy nhất.

Đọc thêm về toán tử dấu phẩy here.

+4

đúng .. chỉ số cuối cùng được sử dụng .. hơn ví dụ: [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]; theo cách này [1,1,1,5,1,1] [3] == 5 – mastak

101

(1,2) == 2. Bạn đã tình cờ gặp comma operator (hoặc simpler explanation here).

Trừ khi dấu phẩy xuất hiện trong danh sách khai báo, danh sách tham số, đối tượng hoặc mảng chữ, chúng hoạt động giống như bất kỳ toán tử nhị phân nào khác. x, y đánh giá x, sau đó đánh giá y và cho kết quả là kết quả.

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

Đây hộp thứ hai tức là [1,2,3] trở thành [3] tức là mục cuối cùng để kết quả sẽ là 4 ví dụ nếu bạn giữ [1,2,3,4,5,6] trong một mảng

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

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

tương tự

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

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

Nhưng khi bạn đặt một toán tử + ở giữa thì khung hình vuông thứ hai không phải là để chỉ mục chỉ mục. Nó là khá khác mảng Đó là lý do tại sao bạn nhận được

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

ví dụ:

var arr_1=[1,2,3]; 

var arr_2=[1,2]; 

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

Về cơ bản trong trường hợp đầu tiên nó được sử dụng như chỉ số của mảng và trong trường hợp thứ hai nó là chính nó một mảng.

1

Mảng thứ hai là một con trỏ tới mảng đầu tiên. Nó sẽ nhận được giá trị cho mỗi mục trong mảng đầu tiên. Ví dụ:

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

phép gọi firstArray = ["a","b","c","d","e"] mảng thứ hai sẽ lần đầu tiên điểm b vì firstArray[1] = "b". Sau đó con trỏ thứ hai sẽ trỏ tới c vì firstArray[2] = "c". Sau đó, con trỏ cuối cùng sẽ trỏ đến d vì firstArray[3] = "d". Do đó, giá trị cuối cùng là "d". Bạn có thể nhìn vào nó theo cách này:

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

Hoặc nếu bạn thay đổi thứ tự của bạn như thế này

var firstArray=["a","b","c","d"] 
var arr = firstArray[1,2,0] 
console.log(arr) //this will be equal to "a" 
Các vấn đề liên quan