Boolean(value); !!value;
const string = 'string'; !!string; // true Boolean(string); // true
const number = 100; !!number; // true Boolean(number); // true
在 JavaScript 中,有 7 个 Falsy Values。 如果将其中任何一个转换为布尔值,它将返回 false。
false // false 关键字 undefined //undefined - 原始值 null //null - 缺少值 NaN //NaN - 非数值 0 //数值 zero "" //空字符串 0n //当 BigInt 作为布尔值使用时, 遵从其作为数值的规则. 0n 是 falsy 值
任何不在上述的虚值里的,都会返回 true ?
!! 用于虚值
!!false; // false !!undefined; // false !!null; // false !!NaN; // false !!0; // false !!''; // false !!0n; //false
Boolean 用于虚值
Boolean(false); // false Boolean(undefined); // false Boolean(null); // false Boolean(NaN); // false Boolean(0); // false Boolean(''); // false Boolean(0n); //false
第一个 ! 将值强制为布尔值并将其取反。在这种情况下,!value
将返回 false。因此,要将其恢复为 true,我们可以再加上一个 !。因此具有双 !!。
const value = 'string'; !value; // false !!value; // true
const value = 'false'; !!value; // true Boolean(value); // true
注意 "false" 引号之间的 '。虽然说 false,但实际上是一个字符串 ?。
!! 比 Boolean 会稍微快一点点~ 点击这里 查阅测试。
var str = 'str'; // Avoid typeof new Boolean(str); // object // Preferred typeof Boolean(str); // boolean typeof !!str; // boolean
如果您得到一个由逗号分隔的字符串值列表,并希望筛选出空字符串,则可以将布尔构造函数函数传递到 Array.prototype.filter
中,它将自动剔除零长度字符串,只留下有效字符串数组。
var str = 'some,list,,of,values'; var arr = str.split(','); arr; // [ 'some', 'list', '', 'of', 'values' ] arr.filter(Boolean); // [ 'some', 'list', 'of', 'values' ]