boolean
是 JavaScript 中一种有趣的原始数据类型。在TypeScript中,非严格模式下("strictNullChecks": false
),它总共允许4个值 true 、false、undefined、null
。
JavaScript 中的 Boolean
boolean
可以取值 true
或 false
。 其他类型的值可以是真值或假值,例如 undefined
或 null
。
let b = true
if(b) console.log('logged')
b = false
if(b) console.log('not logged')
b = undefined
if(b) console.log('not logged')
b = null
if(b) console.log('not logged')
要获取任何值对应的布尔值,可以使用Boolean
函数
Boolean(false) // false
Boolean(true) // true
Boolean("false") // true ❗️
Boolean("Hey folks") // true
Boolean({}) // true
Boolean([]) // true
Boolean(123.4) // true
Boolean(Symbol()) // true
Boolean(function() {}) // true
Boolean(undefined) // false
Boolean(null) // false
Boolean(NaN) // false
Boolean(0) // false
Boolean("") // false
!!
运算也可以达到类似 Boolean()
的效果
const value = 'hello world';
Boolean(value); // true
!!value; // true
Airbnb 的编码风格 偏向使用 !!
进行 boolean
值转换
const age = 0;
// bad
const hasAge = new Boolean(age);
// good
const hasAge = Boolean(age);
// best
const hasAge = !!age;
很多时候 !!
和 Boolean()
可以相互替换。 !!
好处在于编码时快捷,但 Boolean()
是函数, 可以作为方法入参传递,很适合用来过滤集合中的空值。
const collection = [
{ name: 'A'},
undefined,
"false",
false,
23,
null
]
collection.filter(Boolean) //[{ name: 'A'}, "false", 23]
与 Number
转换函数一起使用,将所有值转换为对应的数字或NaN
,这是一种快速获取实际值的非常酷的方法:
const x = ["1.23", 2137123, "wut", false, "lol", undefined, null]
.map(Number)
.filter(Boolean) // [1.23, 2137123]
请发表评论