You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动