【问题标题】:About JS comparators linked behaviour (Abstract Relational Comparison) [duplicate]关于 JS 比较器链接行为(抽象关系比较)[重复]
【发布时间】:2021-05-10 13:04:27
【问题描述】:

JS 中的此类代码 10 <= x <= 100 用于 任何 数字 x 将始终返回 true

怎么称呼?为什么它会这样?我在哪里可以找到一些关于它的文档?

10 <= x && x <= 100 是正确做事的最短途径吗?

【问题讨论】:

  • 因为它被评估为(10 <= x) <= 100,所以(true/false) <= 100,并且truefalse都是<= 100
  • 它的行为是这样的,因为<= 运算符是左关联的,所以它被解析为(10 <= x) <= 100。那是true,因为10 <= x 返回一个布尔值,在与100 比较时,它将被转换为0 或1。文档是any 书籍或在线中对JavaScript 表达式的描述语言参考。
  • 我认为这个问题比它被标记为“重复”的问题更普遍和适用。 (编辑:我确实有点同意这种两面派……但完全不同意反对票。这是一个很好的问题。)
  • 不像 python JS 不计算 x < y < z "mathematically"。

标签: javascript


【解决方案1】:

Abstract Relational Comparison

10 <= x 将是 truefalse

然后someBoolean <= 100 将导致布尔值转换为数字10

10 都小于 100


如果您想对一个数字进行两次比较,那么您需要明确地进行两次比较并将它们与&& 结合起来,而不是简单地将它们混合在一起。

10 <= x && x <= 100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多