JavaScript中&&运算符支持短路求值:左操作数为假值时直接返回它,否则返回右操作数;常用于安全访问嵌套属性、条件执行和默认值设置。

JavaScript 中的逻辑与运算符(&&)天然支持短路求值,它会在左侧操作数为“假值”时直接返回该值,不再计算右侧表达式;只有左侧为“真值”时,才继续求值并返回右侧结果。这个特性常被用于安全访问嵌套属性、条件执行或默认值设置。
短路求值的底层逻辑
&& 运算符从左到右依次求值每个操作数,遇到第一个“假值”(false、0、''、null、undefined、NaN)就立即停止,并返回该值;如果所有操作数都是“真值”,则返回最后一个操作数的值。
-
false && console.log('不会执行')→ 返回false,不触发 log -
0 && 'hello'→ 返回0 -
'a' && 'b'→ 返回'b' -
1 && [] && {x: 1}→ 返回{x: 1}
用 && 做安全的属性访问
当不确定对象是否存在或某层属性是否为 null/undefined 时,可用 && 避免报错。
-
user && user.profile && user.profile.name:任一环节为假值就终止,不会报Cannot read property 'profile' of undefined - 现代写法更推荐可选链
user?.profile?.name,但&&在旧环境或需兼容逻辑判断时仍很实用
用 && 实现条件执行(类似 if 的简写)
利用短路特性,把副作用操作(如函数调用)放在右侧,仅当左侧条件成立时才执行。
立即学习“Java免费学习笔记(深入)”;
-
isLoggedIn && showDashboard():只在isLoggedIn为真时调用showDashboard -
data && data.length > 0 && renderList(data):双重校验后才渲染 - 注意:右侧必须是表达式(如函数调用),不能是语句(如
if或let x = 1)
与默认值结合的常见模式
虽然 ?? 更适合处理 null/undefined,但 && 仍常用于排除所有假值来取“首真值”。
-
const name = inputName && inputName.trim() || 'Anonymous':先过滤空字符串,再 fallback const config = options && options.theme && options.theme.color || 'blue'- 对比:
options?.theme?.color ?? 'blue'更精准(只对 null/undefined fallback)


















