JavaScript:判断初始为undefined的变量是否为true/false的优雅写法
更优雅的布尔值检查写法
嘿,你问的这个问题我太有共鸣了——原来那种两次全等判断的写法确实有点啰嗦,这里有几个更简洁优雅的方案,不仅代码更短,可读性也更强:
方案一:用
typeof直接检查类型
布尔值的typeof结果是'boolean',所以可以直接写:if (typeof isValid === 'boolean') { // do something }这个写法最直观,一眼就能看出你是在判断变量是否为布尔类型(不管是
true还是false),完全替代了原来的两次全等判断,代码更简洁,意图也更明确。方案二:利用双重取反的特性
如果你想玩点小技巧,还可以用双重取反来验证:if (isValid === !!isValid) { // do something }原理是:如果
isValid本身就是布尔值,!!isValid会返回它自己;如果是其他类型(比如undefined、字符串、数字),!!isValid会把它转换成对应的布尔值,但和原变量不相等,这样就能筛选出真正的布尔值。不过这个写法的可读性不如typeof,除非团队里大家都熟悉这个技巧,否则更推荐第一种方案。
另外补充一句:如果你的场景里,只需要确保变量是“真布尔值”(而不是可以被转换成布尔值的其他值),那typeof的写法绝对是最优解——既简洁又清晰,维护代码的人一眼就能懂你的意图。
内容的提问来源于stack exchange,提问作者Robert Strauch




