JavaScript中仅有false、0(含±0)、""、null、undefined、NaN这6个假值,其余所有值均为真值;逻辑运算符返回原值而非布尔值,显式转换推荐Boolean()或!!。

JavaScript 逻辑判断中真正起作用的不是只有 true 和 false 这两个布尔字面量,而是“真值(truthy)”和“假值(falsy)”这一套隐式转换规则。理解它,才能写出稳定、不易出错的条件逻辑。
哪些值会被当作 false(falsy 值)
JS 中只有且仅有 6 个值在 if、&&、||、三元运算符等上下文中被当作 false 处理:
-
false(布尔字面量本身) -
0、-0(数字零,但0n是 truthy) -
""(空字符串,注意:" "或"0"都是 truthy) nullundefinedNaN
哪些值会被当作 true(truthy 值)
除了上面 6 个,其余所有值都是 truthy,哪怕看起来“空”或“无效”:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
[](空数组)、{}(空对象)—— 所有对象(含函数、正则、Date)都是 truthy -
"false"、"0"、"null"、" "—— 非空字符串一律 truthy -
new Boolean(false)—— 包装对象是对象,所以是 truthy(⚠️别这么写) -
42、-1、Infinity、0.0001—— 任何非零数字都是 truthy
逻辑运算符返回的是值,不是布尔
&& 和 || 不返回 true 或 false,而是返回参与运算的某个原始值:
立即学习“Java免费学习笔记(深入)”;
-
a || b:返回第一个 truthy 值;都 falsy 就返回最后一个(0 || "" || null→null) -
a && b:返回第一个 falsy 值;都 truthy 就返回最后一个("hello" && 42→42) -
!总是返回布尔值(!0→true,!![]→true)
显式转布尔该怎么做
需要明确得到 true 或 false 时,推荐用:
-
Boolean(value)—— 语义清晰,可读性好 -
!!value—— 简洁常用,效果等价(!!"abc"→true) - 避免
value === true或value == true—— 它们只匹配布尔true,会漏掉"yes"、[1]等常见 truthy 场景

















