可用&&、||、??简化条件执行和默认值赋值:&&用于真值时执行操作,||基于假值设默认值有陷阱,??仅在null/undefined时生效,深层访问应配合可选链?.使用。

可以用逻辑运算符 &&、|| 和 ?? 实现简洁的条件执行或默认值赋值,但要注意它们不是 if 的完全替代,而是适用于特定场景的简化写法。
用 && 替代「if 为真则执行」
当只想在条件为真时执行某个操作(比如调用函数、修改变量),且该操作本身不依赖返回值时,&& 很方便:
-
isLoggedIn && showUserMenu();—— 等价于if (isLoggedIn) showUserMenu(); -
user && user.name && console.log(user.name);—— 避免访问undefined.name
原理是:&& 左侧为假值(false、null、undefined、0、''、NaN)时短路,不执行右侧;为真值时才求值并执行右侧表达式。
用 || 设置默认值(注意陷阱)
|| 常用于提供后备值,但它基于「真值/假值」判断,不是「是否 undefined 或 null」:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
const name = userName || '游客';—— 如果userName是''、0或false,也会取默认值 - 想只在
null或undefined时 fallback,应改用??(空值合并运算符)
用 ?? 更安全地处理空值
当默认值只应在变量为 null 或 undefined 时生效(允许 0、false、'' 等有效值),优先用 ??:
-
const count = itemCount ?? 0;——itemCount是0不会变成0,仍是0 -
const theme = userPrefs.theme ?? 'light';—— 只有theme确实没设置才用默认主题
链式操作与可选链配合更稳妥
单独用 && 做深层属性访问容易出错,建议结合可选链 ?. :
- 不推荐:
user && user.profile && user.profile.avatar && loadAvatar(user.profile.avatar); - 推荐:
user?.profile?.avatar && loadAvatar(user.profile.avatar);
这样既简洁又避免重复访问和报错,语义也更清晰。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










