Cú pháp
condition ? valueIfTrue : valueIfFalse
Ví dụ cơ bản
<script>
var a = 10, b = 20;
var result = (a > b) ? 100 : 200;
document.write("(a > b) ? 100 : 200 => " + result); // 200
result = (a < b) ? 100 : 200;
document.write("<br>(a < b) ? 100 : 200 => " + result); // 100
</script>
Ứng dụng thực tế
- Gán giá trị có điều kiện:
var status = age >= 18 ? "adult" : "minor";
- Render điều kiện (React/JSX):
{isLoading ? : }
- Default value ngắn gọn:
var name = inputName ? inputName : "Anonymous"; (dùng || hoặc ?? tốt hơn).
Lồng nhau (nested) – Cẩn thận
// Khó đọc
var grade = score > 90 ? "A" : score > 80 ? "B" : score > 70 ? "C" : "F";
// Tốt hơn: if/else hoặc switch
// Hoặc dùng object lookup
var gradeMap = { A: 90, B: 80, C: 70 };
Lưu ý
- Toán tử ternary trả về giá trị, không phải câu lệnh (statement).
- Không dùng cho side-effect phức tạp (gán, gọi hàm nhiều dòng) – dùng if/else rõ ràng hơn.
- Priority thấp hơn hầu hết toán tử – dùng ngoặc đơn khi cần.