【问题标题】:Why 0 and null are true and false with equal operator? [duplicate]为什么 0 和 null 使用相等运算符是真假? [复制]
【发布时间】:2016-09-26 06:07:28
【问题描述】:

我想问一个奇怪的 javascript 问题。在我看来,所有这些条件都相互矛盾并返回 false:

  • 0 > 空
  • 0
  • 0 == 空
  • 0 === 空

为什么使用 >= 和 = 表示 gt, null 应该返回 true。有人可以解释一下这个事实吗?

【问题讨论】:

  • 所有这些值都是假的。没错。因为它们显然是错误的。仅仅因为 0 和 null 在 if 构造中被视为 false 并不意味着这些值是等价的。
  • 欢迎来到 StackOverflow,@mattew。 JavaScript 运算符对于语言新手来说是一个非常常见的困惑来源,它们的大部分奇怪之处都围绕着type coercion 的概念。我已将您链接到此处的一个问题,该问题涵盖了该问题。如果你用谷歌搜索javascript type coercion这个短语,你会看到一页又一页的解释。
  • jeremy 和 rexell,我的问题不同。
  • >= 和
  • 据我所知,@raxell 提供的答案准确地回答了您的问题。

标签: javascript null conditional


【解决方案1】:

当您使用>< 时,null 将转换为数字00 > 00 < 0 都是 false(这是基本数学)。当您使用===== 时,null 不会转换。 0 不等于 null,因此两者也是 false

更一般地说:运算符是为特定的数据类型定义的,如果您传递不同数据类型的值,则该值将首先转换为预期的数据类型。 >< 是为 stringsnumbers 定义的,但不是为 null 定义的。因此null(最终)被转换为数字。

===== 略有不同。虽然== 通常执行类型转换,但如果您与null 进行比较,它不会这样做。就是how the algorithm works

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2020-09-04
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多