JavaScript布尔值
布尔值是JavaScript的基本数据类型之一,只有两个值:true(真)和false(假)。布尔值主要用于条件判断和逻辑运算。
布尔值的创建
直接赋值
javascript
const isActive = true;
const isDone = false;
Boolean构造函数
使用Boolean构造函数创建布尔值:
javascript
const isActive = new Boolean(true);
const isDone = new Boolean(false);
注意:使用构造函数创建的布尔值是对象,而不是基本数据类型:
javascript
const bool1 = true;
const bool2 = new Boolean(true);
console.log(typeof bool1); // boolean
console.log(typeof bool2); // object
布尔值转换
使用Boolean()函数将其他类型转换为布尔值:
javascript
console.log(Boolean(1)); // true
console.log(Boolean(0)); // false
console.log(Boolean("Hello")); // true
console.log(Boolean("")); // false
console.log(Boolean({})); // true
console.log(Boolean(null)); // false
真值和假值
在JavaScript中,所有值都可以转换为布尔值。转换为false的值称为假值(falsy),转换为true的值称为真值(truthy)。
假值列表
以下值在转换为布尔值时为false:
false:布尔假值0:数字零-0:负零0n:BigInt零"":空字符串null:空值undefined:未定义值NaN:不是数字
javascript
console.log(Boolean(false)); // false
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
真值列表
除了假值列表中的值,其他所有值都是真值:
- 非零数字(如
1、-1、3.14) - 非空字符串(如
"Hello"、"false") - 对象(如
{}、[]) - 函数(如
function() {}) - 符号(如
Symbol())
javascript
console.log(Boolean(1)); // true
console.log(Boolean(-1)); // true
console.log(Boolean("Hello")); // true
console.log(Boolean("false")); // true(字符串"false"是真值)
console.log(Boolean({})); // true(空对象是真值)
console.log(Boolean([])); // true(空数组是真值)
console.log(Boolean(function() {})); // true(函数是真值)
逻辑运算符
JavaScript提供了三种逻辑运算符:&&(逻辑与)、||(逻辑或)和!(逻辑非)。
逻辑与(&&)
&&运算符返回第一个假值,如果所有操作数都是真值,则返回最后一个真值:
javascript
console.log(true && false); // false
console.log(false && true); // false
console.log(true && true); // true
console.log("Hello" && "World"); // "World"
console.log("Hello" && ""); // ""
console.log("" && "Hello"); // ""
&&运算符短路:如果第一个操作数是假值,则不会计算第二个操作数。
逻辑或(||)
||运算符返回第一个真值,如果所有操作数都是假值,则返回最后一个假值:
javascript
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
console.log("Hello" || "World"); // "Hello"
console.log("" || "Hello"); // "Hello"
console.log("Hello" || ""); // "Hello"
||运算符短路:如果第一个操作数是真值,则不会计算第二个操作数。
逻辑非(!)
!运算符将操作数转换为布尔值,然后取反:
javascript
console.log(!true); // false
console.log(!false); // true
console.log(!0); // true
console.log(!"Hello"); // false
console.log(!null); // true
使用双感叹号!!可以将值转换为布尔值:
javascript
console.log(!!true); // true
console.log(!!false); // false
console.log(!!0); // false
console.log(!!"Hello"); // true
console.log(!!null); // false
比较运算符
比较运算符返回布尔值,表示比较结果是否为真。
相等运算符
==:相等(值相等)!=:不相等===:严格相等(值和类型都相等)!==:严格不相等
javascript
console.log(5 == "5"); // true
console.log(5 === "5"); // false
console.log(5 != "5"); // false
console.log(5 !== "5"); // true
关系运算符
<:小于<=:小于等于>:大于>=:大于等于
javascript
console.log(5 < 10); // true
console.log(5 <= 10); // true
console.log(5 > 10); // false
console.log(5 >= 10); // false
条件语句
布尔值常用于条件语句中,控制程序的执行流程。
if语句
javascript
const age = 18;
if (age >= 18) {
console.log("你是成年人");
}
if…else语句
javascript
const age = 16;
if (age >= 18) {
console.log("你是成年人");
} else {
console.log("你是未成年人");
}
三元运算符
javascript
const age = 18;
const status = age >= 18 ? "成年人" : "未成年人";
console.log(status); // "成年人"
布尔值的应用场景
条件判断
javascript
function greet(isMorning) {
if (isMorning) {
return "早上好";
} else {
return "下午好";
}
}
console.log(greet(true)); // "早上好"
console.log(greet(false)); // "下午好"
默认值
使用||运算符设置默认值:
javascript
function greet(name) {
name = name || "World";
return "Hello, " + name + "!";
}
console.log(greet("John")); // "Hello, John!"
console.log(greet()); // "Hello, World!"
可选执行
使用&&运算符实现可选执行:
javascript
const user = {
name: "John",
age: 30,
greet: function() {
return "Hello, " + this.name + "!";
}
};
user && user.greet && console.log(user.greet()); // "Hello, John!"
布尔值的最佳实践
- 使用严格相等运算符:优先使用
===和!==,避免隐式类型转换 - 明确转换为布尔值:使用
Boolean()函数或!!运算符明确转换为布尔值 - 注意假值陷阱:了解假值列表,避免常见的陷阱(如空字符串、0、null、undefined、NaN)
- 使用描述性变量名:布尔变量名应该清晰表达其含义(如
isActive、hasPermission)
常见问题
为什么"false"是真值?
因为"false"是一个非空字符串,所有非空字符串都是真值。
javascript
console.log(Boolean("false")); // true
为什么[]和{}是真值?
因为空数组和空对象在JavaScript中是真值,即使它们不包含任何值。
javascript
console.log(Boolean([])); // true
console.log(Boolean({})); // true
为什么0 == ""是true?
因为==运算符会进行隐式类型转换。0转换为字符串是"0",但在比较0 == ""时,两者都会转换为数字:0和0。
javascript
console.log(0 == ""); // true(隐式类型转换)
console.log(0 === ""); // false(严格相等,不进行类型转换)
最后更新:2026-02-08