【JavaScript 教程】第二章基础知识05—JavaScript 布尔值

共 2322字,需浏览 5分钟

 ·

2021-10-26 10:41

英文 | https://www.javascripttutorial.net/

译文 | 杨小爱

在上节中,我们学习了JavaScript Number,错过的小伙伴可以点击文章《【JavaScript 教程】第二章基础知识04—JavaScript  Number》进行学习。

那么,在今天的教程中,我们将一起来学习了解 JavaScript 布尔对象以及布尔对象与布尔基本类型之间的区别。

JavaScript 布尔原始类型

JavaScript 提供了一个布尔基元类型,它有两个值 true 和 false。以下示例声明了两个保存布尔值 false 和 true 的变量:

let isPending = false;let isDone = true;
代码语言:JavaScript ( javascript )

当您将 typeof 运算符应用于保存原始布尔值的变量时,您将获得如下示例所示的布尔值:

console.log(typeof(isPending)); //  booleanconsole.log(typeof(isDone)); // boolean

JavaScript 布尔对象
除了 boolean 原始类型,JavaScript 还为您提供了全局 Boolean() 函数,其中字母 B 为大写,用于将另一种类型的值转换为 boolean。
以下示例显示如何使用 Boolean() 函数将字符串转换为布尔值。因为字符串不为空,所以它返回真。
let a = Boolean('Hi');console.log(a); // trueconsole.log(typeof(a)); // boolean

Boolean 也是 boolean 原始类型的包装对象。这意味着当您将 true 或 false 传递到 Boolean 构造函数时,它将创建一个 Boolean 对象。例如:

let b = new Boolean(false);
要取回原始值,请调用布尔对象的 valueOf() 方法,如下所示:
console.log(b.valueOf()); // false
但是,如果调用 Boolean 对象的 toString() 方法,则会得到字符串值“true”或“false”。例如:
console.log(b.toString()); // "false"

JavaScript 布尔值与布尔值

考虑这个例子:

let completed = true;let active = new Boolean(false);
首先, active 是一个对象,因此您可以向 bar 对象添加一个属性:
active.primitiveValue = active.valueOf();console.log(active.primitiveValue); // false
但是,您不能使用像完成的变量这样的原始布尔变量来做到这一点:
completed.name = 'primitive';console.log(completed.name); // undefined
其次,布尔对象的 typeof 返回对象,而原始布尔值的 typeof 返回布尔值。
console.log(typeof completed); // booleanconsole.log(typeof active); // object
第三,当将 instanceof 运算符应用于布尔对象时,它返回 true。但是,如果将 instanceof 运算符应用于布尔值,它会返回 false。
console.log(foo instanceof Boolean); // falseconsole.log(bar instanceof Boolean); // true
最好,不要使用 Boolean 对象,因为它会造成很多混淆,尤其是在表达式中使用时。例如:
let falseObj = new Boolean(false);if (falseObj) {    console.log('weird part of the Boolean object');}
脚本如何工作?
首先,创建 falseObj 作为 false 值的布尔对象包装器。
其次,在 if 语句中使用 falseObj。因为 falseObj 是一个对象,JavaScript 引擎将它强制转换为布尔值 true。因此,执行 if 块内的语句。
下表总结了 JavaScript Boolean 和 boolean 之间的差异:

建议您使用 Boolean() 函数将不同类型的值转换为 Boolean 类型,但永远不要将 Boolean 用作原始布尔值的包装对象。

在本教程中,您了解了 JavaScript 布尔对象以及布尔对象和布尔基本类型之间的区别。

推荐阅读

【JavaScript 教程】第二章基础知识04—JavaScript  Number

【JavaScript 教程】第二章基础知识03—JavaScript 数据类型

【JavaScript 教程】第二章基础知识02—JavaScript 变量

【JavaScript 教程】第二章基础知识01—JavaScript 语法


学习更多技能

请点击下方公众号

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报