javascript中&&运算符支持短路求值:左侧为falsy时直接返回左侧值且不执行右侧;仅左侧truthy时才计算并返回右侧值。falsy值包括false、0、-0、0n、""、null、undefined、nan。

JavaScript 中的逻辑与 && 运算符天然支持短路求值:只要左侧操作数为“假值”(falsy),右侧表达式就不会执行,直接返回左侧值。
什么是短路求值
短路求值是指在布尔运算中,当结果已能确定时,不再计算后续操作数。对 && 来说,规则是:如果左边是 falsy,整个表达式结果就是左边的值,右边不运行;只有左边为 truthy 时,才继续计算并返回右边的值。
JavaScript 中的 falsy 值包括:false、0、-0、0n(BigInt 零)、""(空字符串)、null、undefined、NaN。其余均为 truthy。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
常见用法与实际示例
-
安全访问嵌套属性:防止
Cannot read property 'x' of undefineduser && user.profile && user.profile.name—— 任一环节为undefined就停止,避免报错。 -
条件执行副作用代码:利用右侧不执行的特性控制流程
isLoggedIn && console.log('欢迎回来')—— 只有登录成功才打印日志。 -
提供默认值(但需谨慎):
config.timeout && config.timeout不如config.timeout ?? 5000或config.timeout || 5000直观;注意0、''等 falsy 值会被覆盖。
和其它操作符对比
&& 返回的是**操作数本身的值**,不是强制转成布尔值。例如:
-
false && "hello"→ 返回false(不是false转布尔) -
"world" && 42→ 返回42 -
[] && {a: 1}→ 返回{a: 1}(空数组是 truthy)
这和 ??(空值合并)不同:?? 只在左侧为 null 或 undefined 时才取右侧,不会把 0 或 "" 当作“无效”。
注意事项
- 别依赖
&&做类型判断,它只看真假值,不区分0和false等语义差异 - 右侧含函数调用时,确保它没有必须执行的副作用(比如发请求、改状态),否则可能被跳过
- 链式使用
&&时可读性会下降,复杂逻辑建议拆成 if 语句或使用可选链?.
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










