【问题标题】:More elegant alternative for "value === false"?“价值===假”的更优雅的选择?
【发布时间】:2011-06-22 09:21:18
【问题描述】:

在 JavaScript 中,我想将(严格)相等的值与 false 进行比较。

从Java/C#我习惯写:

if (!value)
   //Do Something

但是,我不能在 JavaScript 中使用它,因为 nullundefined(和其他恕我直言)在 if 语句中也可以评估为 false。 (我不想那样)。

因此,我一直在编写以下内容来制定这样的检查:

if (value === false)
   //Do Something

然而,这个结构对我来说有点奇怪。
这里有没有更优雅的方法(当然会导致与=== false 相同的结果)?

当然,引入方法isFalse 是一种选择,但这不是我想要的,因为它看起来比=== false 更令人分心。

【问题讨论】:

  • 遗憾的是,JavaScript 中的很多东西对于我们这些习惯于真实语言的人来说看起来很奇怪。 :)
  • 可能坚持使用=== false ...或切换到false === ...
  • if(!value) 如果value 在你提到的那些语言中不是一个真正的布尔值,那么if(!value) 会打你一巴掌。如果您使用“0 = false,其他所有内容 = true”的位掩码会为您节省一些输入,这非常烦人。无论如何,很高兴您不需要a.equals(b),但可以使用a === b,而不是抱怨一个并不奇怪的完美构造;)
  • 对于可选参数,测试=== false=== true 是有意义的,因为未设置的参数是undefined
  • @winSharp93:你最好只测试undefined,否则接受任何愚蠢的东西:if (arg === undefined || arg)

标签: javascript coding-style comparison boolean


【解决方案1】:

如果您真的想在 Javascript 中检查明确的 false 值,而不是“虚假”值(nullundefined0 等),那么到目前为止=== false这样做的最标准方式。我不认为它需要改变——这就是这种动态语言之美的一部分!

【讨论】:

    【解决方案2】:

    请不要编写函数isFalse()The Daily WTF 的候选者),使用=== 运算符,即使它看起来很奇怪,没有更清洁的方法。

    【讨论】:

    • 别担心,我不会那样做的——如前所述,isFalse(value)“看起来会更让人分心”;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2015-12-19
    • 1970-01-01
    • 2010-11-14
    • 2014-12-11
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多