网站
引入
学了 JS 布尔值 之后,知道 true 和 false 是最基础的两个布尔值。
但在 JS 里,不只是 true 和 false 才能在条件判断中使用。很多其他值也会被当成 true 或 false,这就是所谓的真值和假值。Boolean() 函数可以帮我们看到一个值到底是真还是假。
正文
定义
定义
Boolean对象可以把其他类型的值转换为布尔值。Boolean()作为函数调用时返回布尔值,作为构造函数用new调用时返回布尔对象。
Boolean() 函数
Boolean() 作为普通函数调用时,把值转换为 true 或 false。
console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean("hello"));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));假值(Falsy)
以下值在布尔转换时会被当成 false:
| 假值 | 说明 |
|---|---|
false | 布尔值 false |
0 | 数字零 |
-0 | 负零 |
"" | 空字符串 |
null | 空值 |
undefined | 未定义 |
NaN | 非数字 |
console.log(Boolean(false));
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));结果全是 false。
真值(Truthy)
除了假值以外的所有值都是真值。
console.log(Boolean(1));
console.log(Boolean(-1));
console.log(Boolean("hello"));
console.log(Boolean(" "));
console.log(Boolean([]));
console.log(Boolean({}));
console.log(Boolean(function () {}));结果全是 true。
几个容易搞混的:
console.log(Boolean("0"));
console.log(Boolean("false"));
console.log(Boolean([]));
console.log(Boolean({}));这些看起来像”空”或”假”的值,实际上都是真值。
"0"是非空字符串 →true"false"是非空字符串 →true[]空数组 →true{}空对象 →true
不要用 new Boolean()
用 new Boolean() 创建的是对象,不是布尔值。
let a = new Boolean(false);
console.log(typeof a);
console.log(Boolean(a));a 是一个对象,所有对象在布尔转换时都是 true。
所以 new Boolean(false) 实际上是真值,这很容易出错。
正确做法:直接用 Boolean() 函数,不要加 new。
let a = Boolean(false);
console.log(typeof a);
console.log(a);在条件判断中的应用
条件语句会自动把条件值转换为布尔值。
let name = "Tom";
if (name) {
console.log("有名字");
}等价于:
if (Boolean(name)) {
console.log("有名字");
}常见的用法:检查变量是否有值。
let input = "";
if (input) {
console.log("输入不为空");
} else {
console.log("输入为空");
}let user = null;
if (user) {
console.log("用户存在");
} else {
console.log("用户不存在");
}逻辑运算符和布尔值
逻辑运算符 &&、||、! 也和布尔值密切相关。
console.log(!true);
console.log(!false);
console.log(!0);
console.log(!"");
console.log(!"hello");! 会先把值转为布尔值,再取反。
!! 可以把任何值转为布尔值,效果和 Boolean() 一样。
console.log(!!1);
console.log(!!0);
console.log(!!"hello");
console.log(!!"");常见写法
| 写法 | 作用 |
|---|---|
Boolean(value) | 把值转为布尔值 |
!!value | 把值转为布尔值(简写) |
if (value) {} | 判断值是否为真值 |
if (!value) {} | 判断值是否为假值 |
特点
Boolean()是函数,返回布尔值new Boolean()是构造函数,返回布尔对象(不推荐)- 假值只有 7 个:
false、0、-0、""、null、undefined、NaN - 其余所有值都是真值
- 空数组
[]和空对象{}都是真值 !!value等价于Boolean(value)
理解
可以把 Boolean() 理解为一个是非判断器。
把一个值扔进去,它告诉你”有”还是”没有”。
数字 0 → 没有,其他数字 → 有。
空字符串 → 没有,非空字符串 → 有。
null、undefined、NaN → 没有。
最容易踩坑的是空数组和空对象,它们看起来像”空的”,但 JS 认为它们”有”。
实际开发中最常用的场景就是:在 if 里判断变量有没有值。
引出
布尔值的真假判断和 JS 条件判断 直接相关,理解假值和真值可以让条件语句更简洁。
关于布尔值的基础知识,可以回顾 JS 布尔值。