【问题标题】:variable set to minus number evaluates to true [duplicate]设置为负数的变量评估为真[重复]
【发布时间】:2016-05-03 21:26:48
【问题描述】:

这个 javascript 控制台日志让我很困惑。 如何在 if 语句中将值为 -1 的 x 评估为真,而它之前的行为假?谢谢

x = -1
-1
x == true
false
if(x){console.log('yes')}
yes

【问题讨论】:

  • 负数(零除外)不是假值。
  • 参见:stackoverflow.com/a/3619813 x == true; // false - 在这种情况下,布尔值被转换为数字,因此比较变为 -1 == 1 // false
  • 比较一个值到一个布尔值非常不同于转换一个值到一个布尔值。

标签: javascript


【解决方案1】:

当您在 if 语句中测试 x 时,您不是在检查 x 是否为真,而是在检查 x 是否为真。 javascript 中的真实性规则是:

空字符串是错误的。所有其他字符串都是真实的。 0NaN 是假的。所有其他数字都是真实的。 所有对象和数组都是真实的。 nullundefined 是假的。

【讨论】:

    【解决方案2】:
    if(-1){console.log('yes')}
    

    在控制台中打印“yes”,因为 -1 和除 0 之外的其他数字是 truthey 值,尽管 -1 不等于 true

    Here 是扩展与 javascript 真值和假值相关知识的好来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 2018-02-24
      • 2017-02-19
      相关资源
      最近更新 更多