2010-07-23 43 views
11

tôi thấy đoạn mã này trong chuyến đi của tôi trong nghiên cứu JSON:Ký hiệu "?:" Trong JavaScript là gì?

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 

tôi nhìn thấy ngày càng nhiều của các ký hiệu ?:. Tôi thậm chí không biết nó được gọi là gì để tra cứu nó! Bất cứ ai có thể chỉ cho tôi một nguồn tài nguyên tốt cho điều này? (btw, tôi biết những gì có nghĩa là !=).

+1

bản sao có thể có của [javascript if alternative] (http://stackoverflow.com/questions/1688337/javascript-if-alternative) –

+0

bản sao có thể có của [Dấu hỏi trong JavaScript] (http://stackoverflow.com/questions/1771786/question-mark-in-javascript) – Bergi

Trả lời

23

Nó được gọi là Conditional (ternary) Operator. Về cơ bản nó là một sự cô đặc nếu có.

Vì vậy, đây:

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 

... cũng giống như thế này:

var array; 
if (typeof objArray != 'object') { 
    array = JSON.parse(objArray); 
} else { 
    array = objArray; 
} 
+19

Thực ra nó được gọi là toán tử có điều kiện, nhưng nó là toán tử bậc ba. Một toán tử bậc ba là bất kỳ phép toán nào có 3 đầu vào. Tuy nhiên, trong nhiều ngữ cảnh, toán tử bậc ba đã trở thành đồng nghĩa với điều kiện vì điều kiện là hoặc là toán tử bậc ba duy nhất nổi tiếng hoặc đôi khi chỉ có trong ngôn ngữ đó. Ví dụ, ++ - được gọi là toán tử đơn nhất và + -/được gọi là toán tử nhị phân, v.v. Nhưng đó chỉ là ngữ nghĩa, câu trả lời hay, cộng 1. :) –

+1

@Razor - Ngoài ra bổ sung; cũng có một cái nhìn tại đặc tả ECMAScript 5 của [Operitional Operator (?:)] (http://ecma262-5.com/ELS5_Section_11.htm#Section_11.12). –

+0

Đã học được điều gì đó mới mẻ, cảm ơn Razor! –

10

Đó gọi là conditional operator:

condition ? expr1 : expr2 

Nếu conditiontrue, các toán tử trả về giá trị của expr1; nếu không, nó sẽ trả về giá trị của expr2.

+0

+1 để đặt tên toán tử duy nhất trong Javascript một cách chính xác. –

12

Đó là điều kiện điều hành ternary - về cơ bản,

if (condition) { 
    a = 4; 
} 
else { 
    a = 5; 
} 

trở thành

a = condition ? 4 : 5; 
+0

Giống như con trỏ dao cạo trong câu trả lời được chấp nhận: Nó thực sự là toán tử điều kiện [JS] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator), là toán tử bậc ba duy nhất trong JS . –

2

Chỉ cần đọc nó như thế này:

result = (condition) ? (true value) : (false value); 

nơi những gì đã bao giờ bạn muốn trong 3 toán tử.

Như nhiều người đã so sánh nó với một NẾU .. THEN cấu trúc, vì vậy nó được.

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