三元运算符(? :)是JavaScript中用于简洁替代单行if...else的语法,由布尔表达式、问号和两个冒号分隔的结果分支组成,条件为真时取第一个值,否则取第二个值。

三元运算符(? :)是 JavaScript 中简洁替代单行 if...else 的语法,特别适合在赋值语句中根据条件选择一个值。
基本写法:条件 ? 值1 : 值2
它由三部分组成:一个布尔表达式、问号、两个用冒号分隔的结果分支。表达式为真时取第一个值,否则取第二个值。
-
✅ 正确用法(直接赋值):
const status = score >= 60 ? '及格' : '不及格'; -
❌ 错误用法(不能放语句):
score >= 60 ? console.log('好') : console.log('加油'); // 可以运行,但不是赋值
嵌套三元运算符要谨慎
多个条件可用嵌套,但可读性会下降,建议两层以内,超过就该用 if...else 或 switch。
- 简单三档判断示例:
const grade = score >= 90 ? 'A' : score >= 80 ? 'B' : 'C'; - 注意括号提升可读性(非必需,但推荐):
const grade = score >= 90 ? 'A' : (score >= 80 ? 'B' : 'C');
和逻辑运算符(&&、||)的区别
三元运算符一定返回两个分支中的一个值;而 && 和 || 返回的是操作数本身(可能为假值),不等价。
立即学习“Java免费学习笔记(深入)”;
-
const name = user && user.name;—— 如果user为假,结果是user(如null),不是空字符串或默认值 -
const name = user ? user.name : '匿名';—— 明确控制“真时取谁,假时取谁”,更安全可控
实际赋值场景举例
常见于初始化变量、设置默认值、计算类名、生成提示文案等。
- 设置默认用户名:
const displayName = userName ? userName : '游客'; - 动态 class 名:
const className = isActive ? 'btn active' : 'btn'; - 带函数调用的分支(注意括号):
const result = isValid ? process(data) : fallback();


















