2015-03-25 18 views
8

Trong thử nghiệm mã hóa, gần đây tôi đã gặp phải một câu hỏi yêu cầu tôi tìm hiểu nội dung sẽ được in trong bảng điều khiển. Câu hỏi dưới đây. Tôi không hiểu mã dưới đây sẽ được hiểu và thực hiện như thế nào.Sự nhầm lẫn về hành vi của mảng

Cần giúp đỡ

var arr = ["a" , "b" , "c" , "d"][1,2,3]; 
console.log(arr); 

Điều đó arr nét thậm chí có ý nghĩa gì?

Trả lời

13

Mảng trong JS là một chiều.

Vì vậy var arr = ["a" , "b" , "c" , "d"][1,2,3];

Đây [1,2,3] đại diện cho các chỉ số.

Và dấu phẩy là toán tử được đặt trước ít nhất nên [1,2,3] sẽ trả lại cho bạn 3 (tức là phần tử phù hợp nhất luôn).

Do đó

Kết quả sẽ trả lại cho bạn những giá trị tại index 3 đó là d

Update: 

Hãy xem một số điểm nhiều hơn cho comma điều hành:

From MDN:

Dấu phẩy nhà điều hành đánh giá từng toán hạng của nó (từ trái sang phải) và trả về giá trị của toán hạng cuối cùng.

Vì vậy, Nó có nghĩa là:

var a = (10, 18); 
a; //18 

Cũng lưu ý rằng nó là điều cần thiết để đề cập đến chúng ngoặc bên trong khi gán cho một biến.

Nếu bạn cố gắng một cái gì đó như:

var a = 1,2,3; 
a; // will return 1 

Vì vậy, điều quan trọng là bạn bọc chúng bằng ().

Khi nào bạn sẽ sử dụng toán tử ,?

Bạn có thể sử dụng toán tử dấu phẩy khi bạn muốn bao gồm nhiều biểu thức ở vị trí yêu cầu một biểu thức duy nhất. Việc sử dụng phổ biến nhất của toán tử này là cung cấp nhiều thông số trong vòng lặp cho vòng lặp.

for (var i = 0, j = 9; i <= 9; i++, j--) 

Bây giờ bạn đã hiểu về comma điều hành, Hãy xem vài ví dụ nữa để kiểm tra hiểu biết của chúng tôi:

1. var a = (1,3)/(2,1); 
    a // what will be the o/p 

2. var a = ["Stack", "OverFlow","is","Awesome"][1,3,2][2,0] 
    a // What will be the o/p 

3. var a = (true,0,1), b, c; 
    if(b,c,a) { 
     console.log("Will it execute?"); 
    } 
+2

Đúng. OP, ít nhất nó không giống như thế này: 'var wtf =" test "[1,2,3];' có lẽ còn khó hiểu hơn;) –

+0

@DavidTitarenco đó là một cái tốt :) – mohamedrias

+2

Người đàn ông tuyệt vời! Tôi đã học được một cái gì đó mới ngày hôm nay. Tôi không biết rằng dấu phẩy có một ý nghĩa đặc biệt trong ngôn ngữ trước đây. Cảm ơn –

5

dụ bạn bắt tôi offguard. Dưới đây là một ví dụ khác minh họa những gì đang diễn ra.Về cơ bản, danh sách các giá trị được tách nhau bằng dấu phẩy sẽ đánh giá giá trị của giá trị cuối cùng.

if (false, false, true) { 
    console.log("hello") 
} 
// --> "hello" 
+0

Neat đơn giản hóa khái niệm cốt lõi – slebetman

Các vấn đề liên quan