转换为布尔值的最全方法

961 阅读2分钟

前言

通常,您需要一个布尔值( true 或 false )或布尔表达式来检查条件。

在 JavaScript 中,有几种方法可以将任何值转换为布尔值。让我们一一看看。

  • Boolean()
  • (!!) 表达式
  • 将  “true” / “false”  转换为布尔值

Boolean()

使用内置的 Boolean() 对象。该函数接受一个值作为参数并返回一个布尔值。

例如,如果将字符串传递给 Boolean() 对象,如果字符串不为空,它将返回 true ,如果字符串为空,则返回 false 。

let strBoolValue = Boolean('foo'); // true
let strBoolValue = Boolean(''); // false 

同样,如果您将一个数字传递给 Boolean() 对象,如果该数字不为零,它将返回 true ,如果该数字为零,它将返回 false 。

let numberBoolValue = Boolean(1); // true
let numberBoolValue = Boolean(0); // false 

如果你传递一个 对象/数组 给 Boolean() 对象,无论对象/数组是否为空,它都会返回 true 。

let objBoolValue = Boolean({}); // true

let objBoolValue = Boolean({ foo: 'bar' }); // true

let arrBoolValue = Boolean([]); // true

let arrBoolValue = Boolean([1, 2, 3]); // true 

如果将布尔值传递给 Boolean() 对象,它将返回相同的布尔值。

let boolBoolValue = Boolean(true); // true 

如果将 null 或 undefined 传递给 Boolean() 对象,它将返回 false 。

let nullBoolValue = Boolean(null); // false
let undefinedBoolValue = Boolean(undefined); // false 

!! ) 运算符

还有另一种方法可以将任何值转换为布尔值。那就是使用 ( !! ) 运算符。此运算符是一种简写形式,是一种从值推断布尔值的更方便的方法。

它的原理上和 Boolean() 对象相同。因此,前面的所有示例都将以与 !! 得出相同的结果。

let strBoolValue = !!'foo'; // true
let strBoolValue = !!''; // false

let numberBoolValue = !!1; // true
let numberBoolValue = !!0; // false

let objBoolValue = !!{}; // true
let objBoolValue = !!{ foo: 'bar' }; // true

let arrBoolValue = !![]; // true
let arrBoolValue = !![1, 2, 3]; // true

let boolBoolValue = !!true; // true

let nullBoolValue = !!null; // false
let undefinedBoolValue = !!undefined; // false 

将  “true” / “false”  转换为布尔值

这是一个特殊的用例,你在工作中可能会遇到。所以在这里提及一下。

使用上述方法的一个问题是它们不会将字符串 "true" 或 "false" 转换为它们各自的布尔值。

例如,如果将字符串 "false" 传递给 Boolean() 函数,它仍会返回 true 而不是 false 。

为了解决这个问题,您可以使用 JSON.parse() 函数将字符串转换为布尔值

let yesBoolValue = JSON.parse('true'); // true

let noBoolValue = JSON.parse('false'); // false

全文完

谢谢!

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 21 天

点击查看活动详情