条件 (三元) 运算符
**条件(三元)运算符** 是 JavaScript 中唯一一个采用三个操作数的运算符:条件后跟问号 (?
),然后是如果条件为 真值 则执行的表达式,后跟冒号 (:
),最后是如果条件为 假值 则执行的表达式。此运算符通常用作 if...else
语句的替代方案。
试一试
语法
js
condition ? exprIfTrue : exprIfFalse
参数
条件
-
其值为条件的表达式。
exprIfTrue
-
如果
条件
评估为 真值(等于或可以转换为true
的值),则执行的表达式。 exprIfFalse
-
如果
条件
为 假值(即具有可以转换为false
的值的表达式),则执行的表达式。
描述
除了false
之外,可能的假值表达式还有:null
、NaN
、0
、空字符串 (""
) 和undefined
。如果条件
是这些中的任何一个,则条件表达式的结果将是执行表达式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 语言规范 # sec-conditional-operator |
浏览器兼容性
BCD 表格仅在浏览器中加载