摘要:在本教程中,您将了解 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)); // boolean
Code language: JavaScript (javascript)
JavaScript Boolean 对象
除了 boolean
原生类型之外,JavaScript 还提供了全局 Boolean()
函数(其中字母 B
大写),用于将其他类型的数值转换为 boolean
。
以下示例展示了如何使用 Boolean()
函数将字符串转换为布尔值。因为字符串不为空,所以它返回 true
。
let a = Boolean('Hi');
console.log(a); // true
console.log(typeof(a)); // boolean
Code language: JavaScript (javascript)
Boolean
也是 boolean
原生类型的包装对象。这意味着当您将 true
或 false
传递给 Boolean
构造函数时,它将创建一个 Boolean
对象。例如
let b = new Boolean(false);
Code language: JavaScript (javascript)
要获取原始值,您可以调用 Boolean
对象的 valueOf()
方法,如下所示
console.log(b.valueOf()); // false
Code 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); // false
Code language: JavaScript (javascript)
但是,您不能对像 completed
变量这样的原生布尔变量执行此操作
completed.name = 'primitive';
console.log(completed.name); // undefined
Code language: JavaScript (javascript)
其次,typeof
的 Boolean
对象返回 object
,而 typeof
的原生布尔值返回 boolean
。
console.log(typeof completed); // boolean
console.log(typeof active); // object
Code language: JavaScript (javascript)
第三,当将 instanceof
运算符应用于 Boolean
对象时,它返回 true
。但是,如果您将 instanceof
运算符应用于布尔值,则它返回 false
。
console.log(completed instanceof Boolean); // false
console.log(active instanceof Boolean); // true
Code 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
原生类型之间的区别。