javascript布尔逻辑计算依赖真假值规则和短路求值:&&返回首个falsy值或最后操作数,||返回首个truthy值或最后操作数,!仅返回布尔值。

JavaScript 中计算布尔逻辑表达式,核心不是只看 true 或 false,而是依赖“真假值(truthy/falsy)规则”和“短路求值机制”。运算符本身不强制返回布尔值,而是返回参与运算的某个操作数——这直接影响条件判断、默认值设置和安全访问等常见写法。
真假值决定逻辑起点
JS 在逻辑运算前,会把操作数隐式转为布尔值来判断“真/假”,但转换结果不等于最终返回值。以下值被认定为 falsy:
false-
0、-0、0n(BigInt 零) -
""(空字符串) -
null、undefined NaN
其余几乎所有值都是 truthy,包括:"false"、"0"、[]、{}、function(){}、甚至 new Boolean(false)(对象本身是 truthy)。
&& 运算符:取第一个 falsy 值,或最后一个值
执行顺序:先求左操作数 → 若为 falsy,直接返回它(不执行右边);若为 truthy,则返回右操作数(无论真假)。
-
"" && "hello"→ 返回""(左边 falsy,短路) -
2 && null→ 返回null(左边 truthy,返回右边) -
user && user.profile && user.profile.name→ 安全链式取值,任一环节 falsy 就停止并返回那个值,避免报错
|| 运算符:取第一个 truthy 值,或最后一个值
执行顺序:先求左操作数 → 若为 truthy,直接返回它(不执行右边);若为 falsy,则返回右操作数。
-
null || "default"→ 返回"default" -
0 || false || "ok"→ 返回"ok"(前两个 falsy,返回第三个) -
inputName || "游客"→ 常用默认值写法,只要inputName是 falsy 就兜底
! 运算符:只返回布尔值,且严格两步走
行为固定:先将操作数转布尔,再取反。两次取反 !!x 常用于显式转布尔。
-
!"hello"→false("hello" 是 truthy,取反为 false) -
!![]→true(空数组 truthy,双重否定得 true) -
!undefined→true,!0→true,!"0"→false(注意字符串 "0" 是 truthy)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











