javascript中只有7个假值:false、0(含-0、+0)、""、null、undefined、nan、document.all;其余均为真值,boolean()与!!行为完全等价。
javascript 中的 boolean 类型转换,核心在于“真值(truthy)”和“假值(falsy)”的判定规则,而非简单看是否为 true 或 false。调用 boolean()、使用双重取反 !!,或在 if/while 等条件判断中,都会触发该转换。
哪些值是 falsy?
只有 7 个值在转换时明确为 false,其余均为 truthy:
false-
0(包括-0和+0) -
""(空字符串) nullundefinedNaN-
document.all(历史遗留,仅在浏览器环境存在,不推荐依赖)
注意:0n(BigInt 零)是 truthy,new Boolean(false) 是 truthy(因为它是对象),[]、{}、new Date()、function(){} 全部为 truthy —— 即使内容为空或逻辑上“空”。
常见易错点
开发者常误判的几种情况:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
"0"、"false"、" "(含空格)都是 truthy —— 字符串只要非空就为真 -
[]和{}转 Boolean 都是true,但Array.isArray([])和Object.keys({}).length === 0才能准确判断“是否为空” -
0 == false为true(抽象相等),但0 === false为false(严格相等)—— 类型转换发生在==过程中,不是 Boolean 转换本身
安全判断“真/假”的建议
避免隐式转换带来的歧义,推荐按需显式处理:
- 检查是否为 null/undefined:用
value == null(涵盖null和undefined)或value === null || value === undefined - 检查是否为空数组:用
Array.isArray(value) && value.length === 0 - 检查是否为空对象:用
value !== null && typeof value === 'object' && Object.keys(value).length === 0 - 需要布尔语义时,优先用
!!value明确转为布尔,但务必确认原始值的业务含义是否符合预期
Boolean() 与 !! 的行为一致
Boolean(x) 和 !!x 在结果上完全等价,都遵循同一套 falsy 规则。区别仅在于可读性与场景:
-
Boolean(x)更具语义,适合强调类型转换意图 -
!!x更简洁,常用于条件表达式或函数返回值归一化(如return !!value;)
两者都不会改变原值,只生成新的布尔结果。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










