Skip to content

在JavaScript中如何使用Boolean函数?

JavaScript内置的Boolean是我最近在代码审查中经常建议使用的东西之一,所以我想与大家分享一些关于它的技巧。

使用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()函数非常有用,但你可能会在Boolean对象和Boolean构造函数中遇到一些问题。Boolean对象是一个布尔值的对象包装器,但棘手的是,作为一个对象,它始终是真值,即使包含的值是false

let x = new Boolean(false);

if (x) {
  // 这段代码会被执行
}

例如,上面的代码将认为x是真值,即使它明显包含false作为其值。这可能有些令人困惑,但如果你通常避免使用Boolean对象和Boolean构造函数,除非你完全确定需要出于某种原因使用它,你可以很容易地避免这个问题。说实话,我找不到任何需要使用它的场景,所以它可能本来就不太常见。