JavaScript Boolean 和 boolean 不同与区别
在本教程中,您将了解 JavaScript Boolean 对象以及 Boolean 对象与原始类型 boolean 之间的区别
在本教程中,您将了解 JavaScript Boolean 对象以及 Boolean 对象与原始类型 boolean 之间的区别。
JavaScript Boolean 布尔原始类型
JavaScript 提供了一个 boolean 原始类型,它有两个值 true 和 false。以下示例声明了两个变量 ,它们包含布尔值true 和 false。
let isPending = false; 
let isDone = true;当您将  typeof 运算符应用于包含原始布尔值的变量时,您将获得 boolean 如下示例:
console.log(typeof(isPending)); //  boolean
console.log(typeof(isDone)); // booleanJavaScript 布尔对象
除了 boolean 原始类型,JavaScript 还提供了全局 Boolean() 函数,字母 B 大写,将另一个类型的值转换为 boolean 。
以下示例显示如何使用 Boolean() 函数将字符串转换为布尔值。因为字符串不为空,所以它返回true。
let a = Boolean('Hi'); 
console.log(a); // trueconsole.log(typeof(a)); // booleanBoolean 也是 boolean 原始类型的包装对象。这意味着当您将 true 或者 false 传递给 Boolean 构造函数时,它将创建一个Boolean对象。例如:
let b = new Boolean(false);要取回原始值,您可以按如下方式调用 Boolean 对象的valueOf()方法:
console.log(b.valueOf()); // false但是,如果您调用 Boolean 对象的 toString() 方法,您将获得一个字符串值 "true" 或 "false"。例如:
console.log(b.toString()); // "false"JavaScript boolean vs. Boolean
考虑这个例子:
let completed = true; 
let active = new Boolean(false);首先,active 是一个对象,因此您可以向其添加属性:
active.primitiveValue = active.valueOf(); 
console.log(active.primitiveValue); // false但是,您不能原始 boolean 变量来做到这一点,像下面这样使用 completed 变量:
completed.name = 'primitive'; 
console.log(completed.name); // undefined其次,typeof Boolean 对象会返回  object,而 typeof 原始布尔值的返回 boolean。
console.log(typeof completed); // boolean
console.log(typeof active); // object第三,将  instanceof 运算符应用于 Boolean 对象时,它会返回 true。但是,如果您将 instanceof 运算符应用于布尔值,它会返回 false。
console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // true最好不要使用 Boolean 对象,因为它会造成很多混淆,尤其是在表达式中使用时。例如:
let falseObj = new Boolean(false);
if (falseObj) {
    console.log('奇怪的布尔对象');
}看看代码是如何工作的。
- 创建变量值 falseObj使用Boolean对象构造函数并传递false。
- 在 if声明中使用falseObj。因为falseObj是一个对象,JavaScript 引擎将它强制转换为布尔值. 结果是true,if块内的语句被执行。
下表总结了 JavaScript Boolean 和 boolean 之间的区别:
| Operator | boolean | Boolean | 
|---|---|---|
| typeof | boolean | object | 
| instanceofBoolean | false | true | 
建议您使用 Boolean() 函数将不同类型的值转换为布尔类型,但切勿使用 Boolean 构造函数封装原始布尔值 boolean。
结论
在本教程中,您已了解 JavaScript Boolean 对象以及 Boolean 对象与原始类型 boolean 之间的区别。