javascript中仅6个值转布尔为false:undefined、null、0(±0)、nan、''、document.all;其余均为true;boolean()与!!效果相同但语义和简洁性有别,应避免new boolean()。

JavaScript 中把其他数据类型转换为布尔值,主要靠 Boolean() 构造函数或双重取反(!!)操作。它们的底层逻辑完全一致:遵循 JavaScript 的“真值(truthy)”和“假值(falsy)”规则。
哪些值是 falsy(自动转为 false)?
只有 6 个值在转换时会得到 false,其余全是 truthy:
- undefined
- null
- 0(包括 +0、-0)
- NaN
- ''(空字符串,注意:包含空格的字符串如 ' ' 是 truthy)
- document.all(历史遗留特殊值,仅在浏览器环境存在,不建议使用)
常用转换方法
两种写法效果一样,但风格略有不同:
- Boolean(123) → true(语义明确,推荐用于需要清晰表达意图的场景)
-
!!'hello' → true(简洁,常用于条件判断简写,比如
if (!!value) { ... })
注意:new Boolean(value) 是创建布尔对象,不是原始布尔值,应避免使用。
容易误解的情况
有些值看起来像“空”或“无效”,但其实是 truthy:
- '0'(字符串零)→ true
- 'false'(字符串 false)→ true
- [](空数组)→ true
- {}(空对象)→ true
- function(){}(空函数)→ true
这是因为它们都是“存在的值”,不是上面列出的那 6 个 falsy 值。
实际应用建议
多数时候不需要显式转换,JavaScript 在 if、while、逻辑运算中会自动执行 ToBoolean 转换:
-
if (arr) { ... }—— 判断数组是否为 null/undefined,而不是是否为空 - 要判断数组是否为空,应写
if (arr.length === 0) - 要判断对象是否有属性,用
Object.keys(obj).length > 0或for...in
显式调用 Boolean() 更适合调试、日志输出或需要明确布尔结果的函数返回值。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











