如何在 JavaScript 中检查一个值是否为 Falsy

在 JavaScript 中检查一个值是否为 Falsy

How to Check if a Value is Falsy in JavaScript

使用逻辑 NOT (!) 运算符检查值是否为假值,例如
if (!myValue).

逻辑 NOT 运算符true在它出现在假值之前时返回,在所有其他情况下它返回false

索引.js
const myVar = 0; if (!myVar) { console.log('✅ myVar is falsy'); } else { console.log('⛔️ myVar is truthy'); }

我们使用
逻辑 NOT (!)
运算符来检查
myVar变量是否存储了假值。

JavaScript 中的假值是:false, 0, -0, ""(空字符串),
null, undefined, NaN(不是数字)。

仅当存储在变量中的值是上述虚假值之一时,我们的if块才会运行。myVar6

以下是使用逻辑 NOT (!) 运算符和假值的示例:

索引.js
console.log(!false); // 👉️ true console.log(!0); // 👉️ true console.log(!''); // 👉️ true console.log(!null); // 👉️ true console.log(!undefined); // 👉️ true console.log(!NaN); // 👉️ true

所有其他值都被认为是真实的。

空数组和空对象被认为是两个更容易混淆的真值。以下是示例:
索引.js
if (![]) { console.log("⛔️ This doesn't run"); } else { console.log('✅ This runs'); } if (!{}) { console.log("⛔️ This doesn't run"); } else { console.log('✅ This runs'); }

即使数组和对象为空,它们也不是与空字符串相反的虚假值。

索引.js
if (!"") { console.log('✅ This runs'); } else { console.log("⛔️ This doesn't run"); }

如果您需要检查数组或对象是否包含元素或键值对,请改为执行以下操作:

索引.js
if (['a'].length > 0) { // 👉️ array is not empty } if (Object.keys({a: 'b'}).length > 0) { // 👉️ object is not empty }

我们使用该length属性来检查数组是否有多个0元素。

如果数组有多个0元素,则它不是空的。

索引.js
console.log([].length); // 👉️ 0 console.log(['bobby', 'hadz', 'com'].length); // 👉️ 3

如果您需要检查一个对象是否不为空,请检查该对象是否有多个
0键。

索引.js
if (Object.keys({a: 'b'}).length > 0) { // 👉️ object is not empty }

Object.keys()方法返回一个包含对象键的数组。

如果数组包含多个0键,则对象不为空。

您也可以隐式地进行检查,例如:

索引.js
if ([].length) { // 👉️ if this runs, the array is not empty }

在此示例中,我们访问length一个空数组的属性,该数组的计算结果为0

0是一个假值,所以该if块不会运行。

如果要以隐式方式检查数组是否为空,请使用逻辑 NOT (!) 运算符。

索引.js
if (![].length) { // 👇️ this runs console.log('The array is empty'); } else { console.log('The array is NOT empty'); }

[].length表达式返回一个0虚假值。

我们使用逻辑 NOT (!) 运算符来翻转假值,因此if块运行。

以下是 JavaScript 中所有的假值。

索引.js
console.log(Boolean(false)); // 👉️ false console.log(Boolean(0)); // 👉️ false console.log(Boolean('')); // 👉️ false console.log(Boolean(null)); // 👉️ false console.log(Boolean(undefined)); // 👉️ false console.log(Boolean(NaN)); // 👉️ false