javascript中逻辑与(&&)利用短路求值实现条件执行、安全访问和默认赋值,但需警惕0、''等假值导致的意外跳过。

JavaScript 中的逻辑与(&&)不是单纯返回 true 或 false,而是利用“短路求值”特性来控制是否执行右侧表达式——左侧为假值时,右侧直接跳过;左侧为真值时,才继续执行右侧。这使它成为轻量级条件执行的常用工具。
用 && 替代 if 做简单条件触发
当只想在某个条件成立时执行一段代码(尤其是带副作用的操作),&& 比写完整 if 更简洁:
-
user && console.log(user.name):只有user存在且为真值,才打印名字 -
data?.length > 0 && renderList(data):数据存在且非空才渲染列表 -
isLoading && showLoadingSpinner():加载中状态为真时才调起 loading 动画
安全访问嵌套属性
避免因中间某层为 null 或 undefined 导致报错:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
user && user.profile && user.profile.avatar:逐层检查,任一环节为假值就停止,返回该假值 - 等价于传统写法:
if (user && user.profile) { return user.profile.avatar; } - 现代替代方案是可选链
user?.profile?.avatar,但 && 在旧环境或需兼容时仍很实用
配合默认值做条件赋值
利用 && 返回操作数本身的特性,实现“有则取,无则用默认”的逻辑:
const title = response && response.data && response.data.title || '未知标题'- 注意陷阱:如果
title可能是0、''或false,||会误判为假值而启用默认值;此时应显式判断:response?.data?.title ?? '未知标题' - 更稳妥写法:
const config = userSettings && typeof userSettings.theme === 'string' ? userSettings.theme : 'light'
警惕假值带来的意外跳过
&& 判定依据是 JavaScript 的“假值规则”,不只是 null 和 undefined:
-
0 && doSomething()→ 不执行,因为0是假值 -
'' && updateInput()→ 不执行,空字符串也是假值 - 若业务上
0或''是有效值,就不能依赖 && 控制执行,而要用显式比较:user.id !== undefined && user.id !== null && save(user)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










