Skip to content

ES6 - Boolean 对象

在 JavaScript 中,布尔值表示两个值之一:true 或 false。布尔值是条件逻辑和控制流程的基础。

大多数情况下,你将直接使用布尔基本类型值:

const isEnabled = true;
const hasAccess = false;
if (isEnabled) {
console.log('Feature is enabled.');
} else {
console.log('Feature is disabled.');
}

在 JavaScript 中被视为“假值”(falsy)(即在布尔上下文中会被强制转换为 false)的值有:

  • false
  • 0 (零)
  • -0 (负零)
  • 0n (BigInt 零)
  • "" (空字符串)
  • null
  • undefined
  • NaN (非数值)

所有其他值都被视为“真值”(truthy),包括空数组 []、空对象 {} 以及非空字符串,例如 ‘false’。

JavaScript 还有一个 Boolean 对象,它是布尔基本类型的包装器。你可以使用 new Boolean() 构造函数创建一个 Boolean 对象:

const boolObject = new Boolean(value);

如果 value 被省略或属于上面列出的假值之一,则 Boolean 对象的内部值将为 false。否则,它将为 true。

重要提示: 通常不建议使用 Boolean 对象构造函数 (new Boolean())。因为它会创建一个 对象,而 JavaScript 中的所有对象都是真值,即使它们包装的值是 false 也是如此。这可能会导致令人困惑的行为:

const falseObj = new Boolean(false); // 包装的值是 false
if (falseObj) { // 这个条件是 TRUE,因为 falseObj 是一个对象!
console.log('这条日志会打印出来,是不是很意外!');
}
// 要获取基本类型值:
console.log(falseObj.valueOf()); // false

请使用 Boolean() 函数作为转换器来获取布尔基本类型,而不是使用 new Boolean():

const primitiveTrue = Boolean('hello'); // true
const primitiveFalse = Boolean(0); // false
console.log(typeof primitiveTrue); // "boolean"

Boolean 对象的实例(以及通过自动装箱扩展的布尔基本类型)继承 Boolean.prototype 的属性。

属性描述
constructor返回创建实例原型(prototype)的 Boolean 函数的引用。(继承自 Object.prototype)
prototypeBoolean.prototype 属性允许你向 Boolean 对象的所有实例添加属性和方法(很少直接修改)。

布尔基本类型和 Boolean 对象可以访问以下方法:

方法描述
toString()返回布尔值的字符串表示形式,即 “true” 或 “false”。
valueOf()返回 Boolean 对象的原始值(true 或 false)。
const bTrue = true;
const bFalseObj = new Boolean(false);
console.log(bTrue.toString()); // "true"
console.log(bFalseObj.toString()); // "false"
console.log(bTrue.valueOf()); // true (已经是基本类型)
console.log(bFalseObj.valueOf()); // false
  • 始终优先使用布尔基本类型 (true, false)。
  • 理解用于条件判断的真值(truthy)和假值(falsy)。
  • 避免使用 new Boolean() 构造函数,以免产生混淆。如果需要进行类型转换,使用 Boolean() 函数。