JavaScript布尔
原创Boolean 对象详解
Boolean 对象是 JavaScript 中用于表示布尔值的对象包装器。它提供了一种将非布尔值转换为布尔值的方式,同时也提供了一些方法来操作布尔值。
基本概念
Boolean 对象可以接受一个参数,并将其转换为布尔值。如果参数被省略或者值为 0、-0、null、false、NaN、undefined 或空字符串(""),则该对象的初始值为 false。所有其他值,包括任何对象、空数组([])或字符串"false",都会创建一个初始值为 true 的对象。
需要注意的是,不要将基本类型中的布尔值 true 和 false 与值为 true 和 false 的 Boolean 对象混淆。基本类型的布尔值是原始值,而 Boolean 对象是对象类型。
Boolean 对象与基本类型布尔值的区别
任何非 undefined 或 null 的对象(包括值为 false 的 Boolean 对象)在传递给条件语句时都会计算为 true。例如:
const x = new Boolean(false);
if (x) {
// 这里的代码会被执行
}
而基本类型的布尔值则不受此规则影响:
const x = false;
if (x) {
// 这里的代码不会执行
}
正确的布尔值转换方法
不要使用创建 Boolean 对象的方式来转换非布尔值,而应该直接将 Boolean 作为转换函数使用,或者使用双重非(!!)运算符:
const x = Boolean(expression); // 推荐使用
const x = !!expression; // 或者使用这种方式
const x = new Boolean(expression); // 不推荐使用
对于任何对象,即使是值为 false 的 Boolean 对象,当将其传给 Boolean 函数时,生成的 Boolean 对象的值都是 true:
const myFalse = new Boolean(false); // 初始值为 false
const g = Boolean(myFalse); // 初始值为 true
const myString = new String("Hello"); // 字符串对象
const s = Boolean(myString); // 初始值为 true
Boolean 对象的构造函数
Boolean() 构造函数用于创建一个新的 Boolean 对象。它接受一个参数,该参数会被转换为布尔值。
Boolean 对象的实例方法
Boolean 对象提供了两个实例方法:
- Boolean.prototype.toString()
- 根据对象的值返回字符串 "true" 或 "false"。覆盖了 Object.prototype.toString() 方法。
- Boolean.prototype.valueOf()
- 返回 Boolean 对象的原始值。覆盖了 Object.prototype.valueOf() 方法。
创建 Boolean 对象的示例
以初始值 false 创建 Boolean 对象
const bNoParam = new Boolean();
const bZero = new Boolean(0);
const bNull = new Boolean(null);
const bEmptyString = new Boolean("");
const bfalse = new Boolean(false);
以初始值 true 创建 Boolean 对象
const btrue = new Boolean(true);
const btrueString = new Boolean("true");
const bfalseString = new Boolean("false");
const bSuLin = new Boolean("Su Lin");
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});
注意事项
最后,不要在应该使用基本类型布尔值的地方使用 Boolean 对象。基本类型布尔值在大多数情况下更高效、更简单。Boolean 对象主要用于需要将布尔值作为对象处理的特殊场景。
当使用非严格相等(==)来比较一个对象和布尔原始值时,需要理解最终比较的是什么。例如:
if ([]) {
console.log("[] is truthy"); // 输出 "[] is truthy"
}
if ([] == false) {
console.log("[] == false"); // 输出 "[] == false"
}
这是因为非严格比较 [] == false 会将 [] 的原始值和 false 进行比较。而获取 [] 的原始值时,JavaScript 引擎会首先调用 [].toString(),其结果为 "",也是最终和 false 一起比较的值。换句话说,[] == false 等价于 "" == false,而 "" 是假值。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。
开发学习网



