Toán tử điều kiện (ba ngôi) là toán tử duy nhất của JavaScript cần tới ba toán hạng. Toán tử này thường dùng tắt cho câu lệnh if
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Cú pháp
condition ? exprT : exprF
Tham số
condition
- Biểu thức mà giá trị của nó được dùng như điều kiện.
exprT
,exprF
- Biểu thức với giá trị có kiểu bất kỳ.
Mô tả
Nếu condition
có thể chuyển đổi thànhtrue
(hay là truthy), toán tử trả về giá trị của exprT
; ngược lại (khi condition
là falsy), nó trả về giá trị của exprF
.
(Trong cả hai trường hợp, biểu thức còn lại đều không được duyệt tới.)
Ngoài false
ra, các biểu thức falsy có thể xảy ra bao gồm: null
,
, NaN
, xâu ký tự rỗng (0
), và ""
. Nếu undefined
condition
là một trong những gì vừa liệt kê phía trên, kết quả của biểu thức điều kiện sẽ là exprF
.
Ví dụ đơn giản:
var age = 26;
var beverage = (age >= 21) ? "Beer" : "Juice";
console.log(beverage); // "Beer"
Thường dùng để xử lý giá trị null
:
function greeting(person) {
var name = person ? person.name : "stranger";
return "Howdy, " + name;
}
console.log(greeting({name: 'Alice'})); // "Howdy, Alice"
console.log(greeting(null)); // "Howdy, stranger"
Điều kiện nối tiếp
Toán tử điều kiện tuân theo suy dẫn phải, tức là nó có thể được gọi "nối tiếp" theo cách sau đây, tương tự như với if … else if … else if … else
nối tiếp nhau:
function example(…) {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
// Equivalent to:
function example(…) {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
Đặc tả
Đặc tả | Trạng thái | Bình luận |
---|---|---|
ECMAScript (ECMA-262) The definition of 'Conditional Operator' in that specification. |
Living Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Conditional Operator' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | |
ECMAScript 1st Edition (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | Định nghĩa lần đầu. Cài đặt trong JavaScript 1.0. |
Tương thích trình duyệt
BCD tables only load in the browser