Boolean构造函数显式转换分两种:不加new调用Boolean(value)返回原始布尔值,推荐使用;加new创建Boolean包装对象,类型为object且在条件判断中恒为true,不推荐。

用 Boolean 构造函数显式转换数据类型,本质是调用其内部的抽象操作 ToBoolean,但要注意:带 new 和不带 new 行为完全不同。
不加 new:执行类型转换(推荐)
直接调用 Boolean(value) 是最常用、最安全的显式转换方式,它返回原始布尔值 true 或 false:
-
Boolean(0)→false -
Boolean("")→false -
Boolean(null)→false -
Boolean(undefined)→false -
Boolean(NaN)→false -
Boolean({})→true(空对象也是真值) -
Boolean([])→true(空数组也是真值)
加 new:创建布尔包装对象(不推荐)
写成 new Boolean(value) 会返回一个 Boolean 实例对象,不是原始布尔值:
-
typeof new Boolean(false)→"object" -
new Boolean(false) == false→true(抽象相等成立) -
new Boolean(false) === false→false(严格相等不成立) - 该对象在条件判断中始终为
true(因为所有对象都是真值)
所以除非有特殊需求(如扩展实例属性),否则应避免使用 new Boolean()。
立即学习“Java免费学习笔记(深入)”;
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
和双感叹号 !! 的关系
!!value 是 Boolean(value) 的简洁等价写法,原理是:第一次 ! 转为布尔并取反,第二次再取反,最终结果一致:
-
!!0等价于Boolean(0)→false -
!!"hello"等价于Boolean("hello")→true
两者性能和结果无差异,选可读性更强的即可;函数调用更语义明确,!! 更简短。
常见误用提醒
不要混淆“假值”和“类型转换失败”:
-
Boolean("0")→true(字符串"0"非空,是真值) -
Boolean("false")→true(同理) -
Boolean(new Number(0))→true(对象,非原始值) - 若需解析字符串中的布尔字面量,应手动判断:
value === "true"或value === "false"
显式转换的关键是理解 JavaScript 的真值/假值规则,Boolean() 只是忠实反映这套规则,不会做额外解释或类型推断。

















