【问题标题】:Javascript - is null or true - What would be the most elegant solution?Javascript - 是 null 还是 true - 最优雅的解决方案是什么?
【发布时间】:2021-10-18 07:46:29
【问题描述】:

既然我们都知道 null 被评估为 false,我怎么能在 Javascript 中写“is null or true”? 我试过了:

function isNullOrTrue(nullableBool){
  return !(nullableBool != null && nullableBool != true);
}

有没有更好的方法来做到这一点?

【问题讨论】:

  • v === null || v...? (如果需要truthy,否则... v === true。)
  • 如果您的 nullableBool 只能为 true、false 或 null,那么 v !== false 会这样做。否则v === null || v === true[null, true].includes(v)
  • 另一种方式(检查真实性和处理 undefined 像 null 一样)是v ?? true
  • @CherryDT 做出回答并获得一些快速投票:-)
  • 我总是觉得我在旅途中写的单行文字对于我想链接文档、显示示例输入和输出等内容的答案来说并不“成熟”。随意将其编辑为您自己的答案。

标签: javascript null boolean


【解决方案1】:

is null or true 的优雅解决方案是使用 nullish coalescing operator

return nullableBool ?? true

如果nullableBoolnullundefined,它将返回true。否则,它将返回nullableBool 的值。如果你只想返回truefalse,那么你可以使用double bang:

return !!(nullableBool ?? true)

现在,如果 nullableBoolnullundefined 或真值,它将返回 true。否则,返回false

【讨论】:

    【解决方案2】:

    如果三个可能的输入只有nulltruefalse,则可以使用

    return nullableBool !== false
    

    但明确列出匹配值对可读性也不错

    return v === null || v === true
    

    这里实际上不需要使用=== instead of ==,如null != false(而Boolean(null) == false),但如果您不熟悉松散的相等规则,它可能有助于清晰。

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 2010-11-28
      • 2016-06-22
      • 2015-07-03
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      相关资源
      最近更新 更多