JavaScript的真值

原文:Truthy Values in JavaScript

JavaScript的if条件不一定是Boolean值,可以是任何类型的值。内置的强制类型转换接收到一个真值,会转换为true。

JavaScript内置的类型强制转换,会将真值转换为true。每一个值,要么是真值,要么是假值,任何不是假值的必然是真值。

真假经常出现在if语句中。例如,以下if语句只有在v是真值时才能打印。

1
2
3
if (v) {
console.log('v是真值!');
}

记住,JavaScript只有7个假值

  • false
  • 0
  • 0n: BigInt 0
  • '': 空字符串
  • null
  • undefined
  • NaN

任何其他值都是真值。例如,即便是false构建的Boolean对象,也是真值。

1
2
3
4
5
6
const v = new Boolean(false);

// 会打印!所有JavaScript对象都是真值。
if (v) {
console.log('v是真值!');
}

逻辑非运算符

JavaScript的逻辑非运算符将真值转换为false,将假值转换为true。换言之,逻辑非运算符!可以获得JavaScript内置强制类型转换的结果。

1
2
// 如果`v`是真值,`b`是false
const b = !v;

你可能也见过两个逻辑非运算符:!!v。这样可以将一个任意值转换为Boolean类型。

1
2
// 只有`v`是真值时,`isTruthy`才是true。
const isTruthy = !!v;