三元运算符是JavaScript中唯一接受三个操作数的条件运算符,语法为“条件 ? 表达式1 : 表达式2”,先判断条件真假,真则返回表达式1的值,假则返回表达式2的值,适用于简洁赋值、模板插入等场景。

条件运算符(也叫三元运算符)是 JavaScript 中唯一接受三个操作数的运算符,语法简洁,适合替代简单的 if...else 判断,让代码更紧凑、可读性更高(前提是逻辑不复杂)。
基本语法和执行逻辑
三元运算符写法为:条件 ? 表达式1 : 表达式2
它先计算“条件”部分:如果为真值(truthy),整个表达式结果为“表达式1”的值;否则为“表达式2”的值。注意它返回的是值,不是执行语句,所以能直接赋值或嵌入模板中。
- 条件必须是布尔表达式,但会自动强制转换(如
0、null、""会被转为false) - 两个分支都必须存在,不能省略冒号后的部分
- 表达式可以是变量、函数调用、字面量,甚至另一个三元运算符(但建议避免多层嵌套)
常见使用场景和写法示例
✅ 替代单行 if-else 赋值:
立即学习“Java免费学习笔记(深入)”;
const status = score >= 60 ? "通过" : "未通过";
✅ 在模板字符串中动态插入内容:
const message = `用户${isActive ? "已激活" : "未激活"}`;
✅ 设置默认值(配合逻辑运算符更常见,但三元也可):
const name = userName !== undefined ? userName : "匿名用户";
(等价于 const name = userName ?? "匿名用户";,但三元支持更灵活的判断条件)
✅ 控制 DOM 元素样式或属性:
button.className = isDisabled ? "btn disabled" : "btn";
需要注意的陷阱
❌ 不要用于含副作用的复杂逻辑(比如调用多个函数、修改状态):
isValid ? doSomething() : doSomethingElse(); —— 这样写虽能运行,但可读性差,违背三元运算符“求值”的本意,应改用 if-else。
❌ 避免多层嵌套(如 a ? b : c ? d : e),容易出错且难维护。超过一层时,优先考虑 if-else 或提取成函数。
❌ 注意运算符优先级:三元运算符优先级较低,与其他运算符混用时建议加括号明确意图。例如:
const result = flag ? a + b : c + d; ✅ 清晰const result = flag ? a + b : c + d * 2; ❌ 建议写成 flag ? (a + b) : (c + d * 2)
与逻辑运算符(&& 和 ||)的区别
逻辑运算符也常被用来简化判断,但行为不同:
-
&&返回第一个 falsy 值,或最后一个值(短路求值),常用于“有则用,无则跳过”,如user && user.name -
||返回第一个 truthy 值,或最后一个值,常用于默认值,如inputValue || "默认" - 三元运算符强调“二选一”的明确分支,逻辑更对称、可控,适合需要两个确定结果的场景
选择哪个,关键看你想表达的是“提供备选”(||)、“安全取值”(&&),还是“条件选择”(? :)。


















