JavaScript逻辑运算符返回实际操作值而非仅布尔值:&&返回首个假值或最后一个值,常用于安全取值和默认值;||返回首个真值,用于fallback;??仅在null/undefined时取默认值;组合使用可简化控制流但需注意可读性。

JavaScript 中逻辑运算符(&&、||、!)不只是返回 true 或 false,它们会返回**实际的操作数值**,这个特性让布尔判断可以更简洁、更具表现力。
用 && 取“真值”做默认值或短路保护
&& 从左到右计算,遇到第一个“假值”(falsy:如 null、undefined、0、''、false、NaN)就停止并返回它;否则返回最后一个值。常用于提供默认值或避免访问空对象属性。
-
const name = user && user.profile && user.profile.name;—— 安全取深层属性,任一环节为 falsy 就返回那个值(不会报错) -
const title = article.title && article.title.trim() || '无标题';—— 先确保有 title 且非空字符串,否则用默认值 -
function log(msg) { console.log(msg && `[LOG] ${msg}`); }—— msg 为 falsy 时直接不打印
用 || 提供默认值或 fallback
|| 从左到右,返回第一个“真值”(truthy),常用于设置默认参数或兜底值。
-
const timeout = options.timeout || 5000;—— 如果options.timeout是 falsy,就用 5000 -
const id = data?.id || generateId();—— 结合可选链,安全取 id,缺失时生成新 id -
const items = list || [];—— 确保 items 总是数组,避免后续.map报错
用 ??(空值合并)替代 || 处理 null/undefined
|| 对所有 falsy 值都触发 fallback,但有时你只想在值真正“不存在”(null 或 undefined)时才用默认值,比如 0 或 false 是合法值。这时用 ?? 更精准。
-
const count = response.count ?? 0;—— 即使response.count === 0,也不会用 0 的 fallback -
const enabled = config.enabled ?? true;——config.enabled === false时仍保留false,只在未定义时启用默认 - 不能写成
config.enabled || true,否则false会被误判为需要 fallback
组合使用实现条件执行与简洁分支
把逻辑运算符当“微型控制流”用,避免冗长的 if,但要注意可读性边界。
-
isLoggedIn && showDashboard();—— 登录成功才执行函数(类似 if 的单向守卫) -
!isValid && setError('格式错误');—— 验证失败才设错误(!优先级高,注意加括号必要时) -
isMobile ? renderMobile() : renderDesktop();比isMobile && renderMobile() || renderDesktop()更清晰,后者在renderMobile()返回 falsy 时会误执行 desktop,所以三元更稳妥
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











