用 Boolean 进行真实检查
Boolean()
函数在对数据进行真值检查时特别有用,并且可能比双重否定 (!!
) 操作更具可读性:
let x = 'some-value';
// 这看起来不太美观
if (!!x) {
// ...
}
// 这更具可读性
if (Boolean(x)) {
// ...
}
正如你在上面的例子中所看到的,它的用途完全相同,并且用起来非常简单。 同样,由于 Boolean()
本身就是一个返回布尔值的函数,你可以用它来检查集合、过滤数组等:
const values = [0, 0, 2, 0, 3];
// 用作 Array.prototype.some() 的回调
const hasValidValue = values.some(Boolean);
// 用作 Array.prototype.filter() 的回调
const nonEmptyValues = values.filter(Boolean);
小心处理布尔对象
虽然 Boolean()
函数非常有用,但是会遇到一些关于 Boolean
对象和 new Boolean()
构造函数的问题。 Boolean
对象是一个布尔值的对象包装器,但棘手的部分是,作为一个对象,即使包含的值为 false
,它也始终为真!
let x = new Boolean(false);
if (x) {
// 这里的代码会执行
}
例如,上面的代码会考虑 x
为真,即使它明确把 false
作为其值。 这可能有些令人困惑,但是如果你不用 Boolean
对象和 new Boolean()
构造函数,就可以轻松避免它,除非你完全确定出于什么原因需要使用它。 我找不到任何需要使用它的场景,所以一开始可能并不常见。