javascript中逻辑与(&&)利用短路求值实现条件执行:左操作数为假值时跳过右表达式,仅当全为真值才执行右侧;右操作数必须是表达式而非语句,适用于简单守卫场景,但复杂逻辑应优先使用if或可选链。

JavaScript 中的逻辑与运算符(&&)本身不“执行”代码,但它能**天然实现条件执行**——利用其短路求值特性,在左侧为假值时跳过右侧表达式,从而控制是否运行某段逻辑。
逻辑与的短路行为是关键
&& 从左到右依次计算操作数,一旦遇到**假值(falsy)**,立即返回该值,不再计算右边;只有左边为真值(truthy)时,才继续计算并返回右边的值。这个机制让 && 成为简洁的条件执行工具。
-
假值包括:
false、0、-0、0n(BigInt 零)、""(空字符串)、null、undefined、NaN -
真值是其余所有值,比如
1、"hello"、[]、{}、function(){}等
用 && 替代简单的 if 语句
当只想在某个条件成立时执行一个操作(尤其是单条语句),&& 可以替代简短的 if,更紧凑:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
// 等价写法
if (user && user.name) {
console.log(user.name);
}
// ✅ 更简洁的写法
user && user.name && console.log(user.name);
这里只有 user 和 user.name 都为真值时,console.log 才会执行;任一为假,整个表达式提前结束,不触发打印。
注意:右边必须是“可求值的表达式”
&& 右侧不能是语句(如 return、throw、let x = 1),只能是表达式(有返回值)。常见误区:
- ❌
user && return "ok"—— 语法错误,return是语句 - ✅
user && (() => { console.log("ok"); })()—— 匿名函数调用是表达式 - ✅
user && alert("ok")——alert是函数调用,有返回值(undefined)
实际中更推荐明确写法
虽然 && 能实现条件执行,但过度使用会降低可读性,尤其嵌套或混用时。现代开发中:
- 简单副作用(如
log、dispatch)可用&&快速守卫 - 涉及分支逻辑、多步骤、或需处理假值场景时,优先用
if或可选链(?.)+ 空值合并(??) - 例如安全取属性:
user?.profile?.avatar ?? "default.png"比user && user.profile && user.profile.avatar || "default.png"更清晰可靠
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










