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

b191e62b5fd98d9b39d8f0ca9a41790a.png

英文 | 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)); //  boolean
console.log(typeof(isDone)); // boolean

JavaScript 布尔对象

除了 boolean 原始类型,JavaScript 还为您提供了全局 Boolean() 函数,其中字母 B 为大写,用于将另一种类型的值转换为 boolean。

以下示例显示如何使用 Boolean() 函数将字符串转换为布尔值。因为字符串不为空,所以它返回真。

 
 
let a = Boolean('Hi');
console.log(a); // true
console.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); // boolean
console.log(typeof active); // object

第三,当将 instanceof 运算符应用于布尔对象时,它返回 true。但是,如果将 instanceof 运算符应用于布尔值,它会返回 false。

 
 
console.log(foo instanceof Boolean); // false
console.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 之间的差异:

d14619a59b69d0d34877e85b23d018e7.png

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

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

推荐阅读

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

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

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

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

学习更多技能

请点击下方公众号

198c9a50c8e1b0042f06f40263f51d2c.gif

ce3f77eeb6ffc64ad3a9aa1624f075e5.png

d67bb4c5cd9bbb54624a844cf47211d6.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值