条件(三元)运算符

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

条件(三元)运算符是 JavaScript 中唯一一个接受三个操作数的运算符:一个条件,后跟一个问号 (?),然后是当条件为真值时执行的表达式,后跟一个冒号 (:),最后是当条件为假值时执行的表达式。此运算符常用于替代if...else语句。

试一试

function getFee(isMember) {
  return isMember ? "$2.00" : "$10.00";
}

console.log(getFee(true));
// Expected output: "$2.00"

console.log(getFee(false));
// Expected output: "$10.00"

console.log(getFee(null));
// Expected output: "$10.00"

语法

js
condition ? exprIfTrue : exprIfFalse

参数

条件

一个值用作条件的表达式。

exprIfTrue

如果 condition 的求值结果为真值(即等于或可以转换为 true 的值),则执行的表达式。

exprIfFalse

如果 condition假值(即其值可以转换为 false),则执行的表达式。

描述

除了 false,可能的假值表达式有:nullNaN0、空字符串 ("") 和 undefined。如果 condition 是这些值中的任何一个,则条件表达式的结果将是执行表达式 exprIfFalse 的结果。

示例

一个基本示例

js
const age = 26;
const beverage = age >= 21 ? "Beer" : "Juice";
console.log(beverage); // "Beer"

处理空值

一个常见的用法是处理可能为 null 的值

js
const greeting = (person) => {
  const name = person ? person.name : "stranger";
  return `Howdy, ${name}`;
};

console.log(greeting({ name: "Alice" })); // "Howdy, Alice"
console.log(greeting(null)); // "Howdy, stranger"

条件链

三元运算符是右结合的,这意味着它可以按以下方式“链式”使用,类似于 if … else if … else if … else

js
function example() {
  return condition1 ? value1
    : condition2 ? value2
    : condition3 ? value3
    : value4;
}

这等同于以下if...else链。

js
function example() {
  if (condition1) {
    return value1;
  } else if (condition2) {
    return value2;
  } else if (condition3) {
    return value3;
  } else {
    return value4;
  }
}

规范

规范
ECMAScript® 2026 语言规范
# sec-conditional-operator

浏览器兼容性

另见