Boolean(value)显式转换遵循truthy/falsy规则,6个假值:false、0、-0、0n、""、null、undefined、NaN;其余为真值;禁用new Boolean();常用!!value替代,但Boolean()可读性更强。

用 Boolean 构造函数进行显式类型转换,本质是调用其作为函数时的转换逻辑(不是作为构造器使用),即 Boolean(value)。它会将任意值转为对应的布尔值 true 或 false,遵循 JavaScript 的“真值(truthy)”和“假值(falsy)”规则。
Boolean() 函数的转换规则
Boolean 作为函数调用时(不加 new),返回原始布尔值;若误加 new,则创建一个布尔包装对象(不推荐,易引发意外行为)。
- 以下 6 个值转为 false:
false、0、-0、0n(BigInt 零)、""(空字符串)、null、undefined、NaN - 其余所有值(包括
"false"、"0"、[]、{}、function(){}等)都转为 true
常见写法与注意事项
务必直接调用 Boolean(value),不要写成 new Boolean(value):
- ✅ 正确(显式转换,返回原始布尔值):
Boolean("hello") // true,Boolean([]) // true,Boolean(0) // false - ❌ 错误(创建对象,且该对象本身是 true):
new Boolean(false)返回的是一个对象,而if (new Boolean(false))仍会进入分支,因为对象永远是真值
替代写法与实际用途
虽然 Boolean(value) 明确,但日常中更常用双重非操作符 !!value 实现相同效果,写法更简洁:
Boolean("test") === !! "test" // trueBoolean(null) === !! null // true
两者语义一致,!! 是惯用缩写,但 Boolean() 更具可读性,尤其在需要强调类型意图或教学场景中。
和隐式转换的区别
条件判断(如 if、while、三元运算符)中会自动进行 ToBoolean 转换,无需显式调用。显式调用只在你需要一个明确的布尔值变量时才有意义:
- 隐式:
if ([]){ ... }—— 数组被自动转为true,但不产生布尔变量 - 显式:
const isEmpty = Boolean(arr.length === 0);—— 得到一个清晰的布尔变量供后续使用











