JavaScript中只有6个假值:false、0(含-0)、""、null、undefined、NaN;其余所有值均为真值,如"0"、[]、{}、0n、new Boolean(false)等均不为假值。

JavaScript 中判断真假分支,本质是把值转为布尔值,这个过程叫“类型转换”或“真值/假值判断”。它不依赖显式调用 Boolean(),而是由 if、&&、||、! 等操作自动触发。
哪些值会被当成 false(假值)
只有 6 个值在布尔上下文中被认定为 false,其余全是 true:
false-
0(包括-0和+0) -
""(空字符串) nullundefinedNaN
注意:0n(BigInt 零)、document.all(历史遗留对象)等不是标准假值,不要混淆。
常见易错的“看似假实为真”情况
很多初学者以为某些值是假的,其实它们会进入 if 分支:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
"0"、"false"、" "(含空格的字符串)→ 都是 true -
[](空数组)、{}(空对象)、new Date()、/./(正则)→ 全是 true -
0n(BigInt 零)→ true(和数字0不同) -
new Boolean(false)→ true(包装对象始终为真)
安全判断非空/有效值的写法
直接用 if (val) 很方便,但有时不够精确。比如你想区分 0 和 null,就得显式判断:
- 检查是否为
null或undefined:用val == null(宽松相等,涵盖两者)或val === null || val === undefined - 检查是否为有效数字:先
typeof val === 'number',再!isNaN(val) - 检查是否为非空字符串:用
typeof val === 'string' && val.trim() !== '' - 检查是否为非空数组:用
Array.isArray(val) && val.length > 0
显式转布尔值的方法
如果确实需要明确得到 true 或 false,可用以下方式:
-
Boolean(val)—— 最语义清晰,推荐用于调试或逻辑封装 -
!!val—— 双非操作,简洁常用,等价于Boolean(val) -
val ? true : false—— 不必要,绕远路,避免使用
例如:!!"hello" → true,!![] → true,!!0 → false。

















