原文: How to Convert a Value to a Boolean in JavaScript

布尔值是一种基本数据类型,代表真或假。在布尔语境中,JavaScript 利用类型转换来将值转换成真/假。有一些隐式和显式的方法可以将数值转换为对应的布尔值。

这篇文章提供了一个关于真假值的概述,以及如何在 JavaScript 中把值转换成布尔值。

JavaScript 真假值检查单

Boolean(false);         // false
Boolean(undefined);     // false
Boolean(null);          // false
Boolean('');            // false
Boolean(NaN);           // false
Boolean(0);             // false
Boolean(-0);            // false
Boolean(0n);            // false

Boolean(true);          // true
Boolean('hi');          // true
Boolean(1);             // true
Boolean([]);            // true
Boolean([0]);           // true
Boolean([1]);           // true
Boolean({});            // true
Boolean({ a: 1 });      // true
Source: What are truthy and falsy values in JavaScript?

最好先了解哪些值会被 JavaScript 解释为真值或假值。与显式强制相比,理解隐式强制也很重要。

隐式强制是由 JavaScript 引擎发起并自动发生的。显式强制是通过手动转换值来进行的,JavaScript 提供了内置的方法来处理这个问题。

!! 操作符

!!value

你可能已经熟悉了 ! 作为逻辑上的 NOT 运算符。当连续使用两个(!!)时,第一个 ! 将数值强制为布尔值,并将其倒置。例如 !true 是 false。第二个 ! 将先前的值反转,结果是真的布尔值。

这通常是一个首选方法,因为它有更好的性能。这种方法的潜在缺点是如果其他开发者不熟悉这个运算符的工作方式,就少了些可读性。

const value = "truthy string"
!!value // true

下面的例子通过分解步骤来介绍它:

const value = "truthy string";

!value; // false
!!value; // true

下面是使用 !! 操作符的示例输出:

// 假值

!!'' // false
!!false // false
!!null // false
!!undefined // false
!!0 // false
!!NaN // false


// 真值

!![] // true
!!"false" // true
!!true // true
!!1 // true
!!{} // true

Boolean() 函数

Boolean(value)

Boolean() 是一个全局函数,它将传递给它的值转换为布尔值。

你不应该将其与 new 关键字(new Boolean)一起使用,因为这将创建一个具有对象类型的布尔值实例。下面是一个正确使用这个函数的例子。

const value = "truthy string"
Boolean(value) // true

TL;DR

在 JavaScript 中,有两种方法可以将一个值转换为布尔值。

1. !!

!!value

2. Boolean()

Boolean(value)
const finalThoughts = "I really enjoyed writing this article. Thanks for reading!"

!!finalThoughts // true
Boolean(finalThoughts) // true