摘要:在本教程中,您将了解 JavaScript 的 Boolean 对象以及 Boolean 对象与 boolean 原生类型之间的区别。
JavaScript 布尔值原生类型
JavaScript 提供了一个 布尔值 原生类型,它有两个值 true 和 false。以下示例声明了两个 变量,它们分别包含 false 和 true 的布尔值
let isPending = false;
let isDone = true;Code language: JavaScript (javascript)当您将 typeof 运算符应用于包含原生布尔值的变量时,您将获得 boolean,如下面的示例所示
console.log(typeof(isPending)); // boolean
console.log(typeof(isDone)); // booleanCode language: JavaScript (javascript)JavaScript Boolean 对象
除了 boolean 原生类型之外,JavaScript 还提供了全局 Boolean() 函数(其中字母 B 大写),用于将其他类型的数值转换为 boolean。
以下示例展示了如何使用 Boolean() 函数将字符串转换为布尔值。因为字符串不为空,所以它返回 true。
let a = Boolean('Hi');
console.log(a); // true
console.log(typeof(a)); // booleanCode language: JavaScript (javascript)Boolean 也是 boolean 原生类型的包装对象。这意味着当您将 true 或 false 传递给 Boolean 构造函数时,它将创建一个 Boolean 对象。例如
let b = new Boolean(false);Code language: JavaScript (javascript)要获取原始值,您可以调用 Boolean 对象的 valueOf() 方法,如下所示
console.log(b.valueOf()); // falseCode language: JavaScript (javascript)但是,如果您调用 Boolean 对象的 toString() 方法,您将获得一个字符串值 "true" 或 "false"。例如
console.log(b.toString()); // "false"Code language: JavaScript (javascript)JavaScript 布尔值与 Boolean
考虑这个例子
let completed = true;
let active = new Boolean(false);Code language: JavaScript (javascript)首先,active 是一个对象,因此您可以向它添加一个属性
active.primitiveValue = active.valueOf();
console.log(active.primitiveValue); // falseCode language: JavaScript (javascript)但是,您不能对像 completed 变量这样的原生布尔变量执行此操作
completed.name = 'primitive';
console.log(completed.name); // undefinedCode language: JavaScript (javascript)其次,typeof 的 Boolean 对象返回 object,而 typeof 的原生布尔值返回 boolean。
console.log(typeof completed); // boolean
console.log(typeof active); // objectCode language: JavaScript (javascript)第三,当将 instanceof 运算符应用于 Boolean 对象时,它返回 true。但是,如果您将 instanceof 运算符应用于布尔值,则它返回 false。
console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // trueCode language: JavaScript (javascript)最佳实践是永远不要使用 Boolean 对象,因为它会造成很大混淆,特别是在表达式中使用时。例如
let falseObj = new Boolean(false);
if (falseObj) {
console.log('weird part of the Boolean object');
}Code language: JavaScript (javascript)脚本的工作原理。
- 首先,创建
falseObj作为false值的Boolean对象包装器。 - 其次,在
if语句中使用falseObj。因为falseObj是一个对象,而 JavaScript 引擎会将其强制转换为布尔值true。因此,if块中的语句将被执行。
下表总结了 JavaScript Boolean 和 boolean 之间的区别
| 运算符 | 布尔值 | Boolean |
|---|---|---|
typeof | 布尔值 | object |
instanceof Boolean | false | true |
建议您使用 Boolean() 函数将不同类型的数值转换为布尔类型,但您永远不应使用 Boolean 作为原生布尔值的包装对象。
在本教程中,您学习了 JavaScript Boolean 对象以及 Boolean 对象与 boolean 原生类型之间的区别。