JavaScript中逻辑运算符用于条件赋值:||在假值时返回右侧值(含0/空字符串等),??仅在null/undefined时返回右侧值(推荐),&&在真值时返回右侧值,三者可组合实现多级兜底。

JavaScript 中用逻辑运算符(&&、||、??)做条件赋值,本质是利用它们的“短路求值”和“返回操作数本身”的特性,替代冗长的 if 或三元表达式,让代码更简洁可读。
用 || 提供默认值(旧式写法)
|| 在左侧为“假值”(false、0、''、null、undefined、NaN)时返回右侧值,常用于兜底:
-
适用场景:变量可能为空字符串、0 或
false,但你只希望在null/undefined时才用默认值——这时||不够精准(比如0 || 10得到10,但 0 可能是合法值)。 -
写法示例:
const name = user.name || '匿名用户'; -
注意:若
user.name是0、false或空字符串,也会触发默认值,不总是符合业务意图。
用 ?? 提供空值默认值(推荐,ES2020+)
??(空值合并运算符)只在左侧为 null 或 undefined 时才返回右侧值,对其他假值(如 0、false、'')保持原样:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 适用场景:需要真正区分“未定义/空”和“有效但为假值”的情况,比如配置项、分页参数、计数器初始值。
-
写法示例:
const pageSize = config.limit ?? 20;(即使config.limit是0,也保留它) -
链式使用:
const theme = user.preferences?.theme ?? 'light';(结合可选链,安全又干净)
用 && 做存在性取值或条件执行
&& 在左侧为真值时返回右侧值,否则返回左侧;常用于“有值才取”或“满足条件才执行”:
立即学习“Java免费学习笔记(深入)”;
-
安全取嵌套属性:
const title = article && article.meta && article.meta.title;(等价于article?.meta?.title,但&&兼容更老环境) -
条件执行副作用:
isLoggedIn && showWelcomeMessage();(比if (isLoggedIn) showWelcomeMessage();更紧凑,适合简单逻辑) - 注意:不要滥用在复杂语句中,会降低可读性;纯函数式场景优先用可选链和空值合并。
组合使用更灵活
多个逻辑运算符可以组合,实现更自然的默认逻辑:
-
const value = options.value ?? (options.fallback && options.fallback());(先尝试空值默认,不满足再执行回退函数) -
const id = user?.id ?? userData?.id ?? 0;(多级兜底,清晰表达优先级) - 避免过度嵌套:
a && b && c || d语义模糊,建议拆解或改用三元/函数封装。

















