【问题标题】:Javascript chained inequality gives bizarre results [duplicate]Javascript链式不等式给出了奇怪的结果[重复]
【发布时间】:2013-03-17 20:52:41
【问题描述】:
(0 <= 0 <= 0) === false
(-1 < 0 <= 0 <= 0) === true

这里发生了什么? Javascript 是否真的有在某些情况下错误的不等式链接?

【问题讨论】:

  • 啊,你说得对,菲利克斯。对于那个很抱歉;我在发帖前搜索了一段时间,但没有看到那个。我有什么办法可以直接将其作为副本关闭?

标签: javascript


【解决方案1】:

输入了问题,然后被答案打动了。 Javascript 没有不等式链接。相反,0 &lt;= 0 &lt;= 0 变为 true &lt;= 0,其计算结果为 1 &lt;= 0。实际上,0 &lt; 0 &lt;= 0 的计算结果为 true

【讨论】:

    【解决方案2】:

    除了precedence 之外没有运算符链接。这里所有的操作符都有相同的优先级,所以操作是从左到右进行的。

    当您的比较涉及布尔值时,the MDN explains how the comparison works

    如果其中一个操作数是布尔值,则布尔操作数转换为 1 为真,+0 为假。

    这意味着第一个操作根据优先级分解为

    ((0 <= 0) <= 0)
    

    这是

    true <= false
    

    这是

    false
    

    第二个是

    (true <= 0) <= 0
    

    这是

    false <= 0 
    

    这是true

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 2014-02-23
      • 2020-08-12
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多