JavaScript中只有6个假值:false、0(含-0/+0)、''、null、undefined、NaN,其余均为真值;显式转换用Boolean()最可靠,隐式转换发生在条件判断和逻辑运算中,对象和函数即使为空也恒为真值。
JavaScript 中的 Boolean 转换不是简单判断“真假”,而是依据一套明确的真值(truthy)与假值(falsy)规则,所有值都会被隐式或显式转为 true 或 false,关键在于记住哪些是假值,其余全是真值。
JavaScript 规定,以下 6 个值在布尔上下文中自动转为 false,且仅这 6 个:
false(布尔值本身)0(数字零,包括 -0 和 +0)''(空字符串,注意:' '(含空格)是真值)nullundefinedNaN其他所有值——包括 0n(BigInt 零)、{}(空对象)、[](空数组)、new Date('invalid')(无效日期)、function(){}(空函数)——全部为真值。
想明确知道某个值的布尔结果,直接调用 Boolean(value):
立即学习“Java免费学习笔记(深入)”;
Boolean([]) → true(空数组不是假值)Boolean({}) → true(空对象也不是假值)Boolean(new Boolean(false)) → true(包装对象始终真值)避免用双重否定 !!value 做逻辑判断,虽等价但可读性差;Boolean() 语义清晰,适合调试和类型断言。
if、while、三元运算符、&&、||、?? 都会触发强制转换:
if ([]) { ... } → 执行(因 [] 是真值)0 || 'default' → 'default'(0 是假值,返回右侧)'' ?? 'fallback' → 'fallback'(?? 只在 null 或 undefined 时生效,空字符串不触发)注意:?? 和 || 行为不同——前者只对 null/undefined 敏感,后者对所有假值敏感。
JS 不检查对象属性是否为空、函数体是否为空,只看它是不是对象或函数类型:
Boolean({})、Boolean([])、Boolean(() => {}) 全是 true
Boolean(new Number(0)) → true(包装对象非原始值,不受原始假值规则约束)Object.keys(obj).length > 0 或 for...in
别依赖 if (obj) 判断对象“是否为空”,它只说明 obj 不是 null 或 undefined。
阿里云服务器ECS省钱技巧:临界天数计算公式:付费模式这么选更划算!
阿里云服务器ECS三种付费类型怎么选 包年包月 / 按量 / 抢占式成本对比
2026阿里开发者社区认证的门店小程序开发工具实测对比:附门店小程序制作教程
2026阿里开发者评选出的全国最佳教培机构小程序开发工具实测对比:附教培机构小程序制作教程
轻抖app如何实名认证 轻抖实名认证方法
2026全国3款AI/SAAS商城小程序开发工具推荐:附商城小程序开发教程