前言
通常,您需要一个布尔值( 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 天