Boolean类型

​ Boolean(布尔值)类型是 ECMAScript 中使用最频繁的类型之一,有两个字面值:true 和 false。 这两个布尔值不同于数值,因此 true 不等于 1false 不等于 0。下面是给变量赋布尔值的例子:

let found = true;
let lost = false;

​ 注意,布尔值字面量 true 和 false 是区分大小写的,因此 True 和 False(及其他大小混写形式) 是有效的标识符,但不是布尔值

​ 虽然布尔值只有两个,但所有其他 ECMAScript 类型的值都有相应布尔值的等价形式。要将一个其他类型的值转换为布尔值,可以调用特定的 Boolean()转型函数:

let message = "Hello world!";
let messageAsBoolean = Boolean(message);

​ 在这个例子中,字符串 message 会被转换为布尔值并保存在变量 messageAsBoolean 中。 Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。什么值能转换为 true 或 false 的规则取决于数据类型和实际的值。下表总结了不同类型与布尔值之间的转换规则

数据类型转换为 true 的值转换为 false 的值
Booleantruefalse
String非空字符串""(空字符串)
Number非零数值(包括无穷值)0、NaN(参见后面的相关内容)
Object任意对象null
UndefinedN/A(不存在)undefined

​ 理解以上转换非常重要,因为像 if 等控制流语句自动执行其他类型值到布尔值的转换,例如:

let message = "Hello world!";
if (message) {
  console.log("Value is true");
}

​ 在这个例子中,console.log 会输出字符串”Value is true”,因为字符串 message 会被自动 转换为等价的布尔值 true。由于存在这种自动转换,理解流控制语句中使用的是什么变量就非常重要。 错误地使用对象而不是布尔值会明显改变应用程序的执行流。