【问题标题】:In JavaScript why 2 > 1 > 0 true while 8 > 1 > 1 false? [duplicate]在 JavaScript 中为什么 2 > 1 > 0 为真而 8 > 1 > 1 为假? [复制]
【发布时间】:2021-04-11 10:59:56
【问题描述】:

我们知道大于和小于运算符的工作原理。

    console.log(2 < 12) // true
    
    console.log(2 < "12") // true

    console.log("2" > "12") // true

但是当我们用大于和小于运算符比较两个以上的值时。那我就看不懂幕后的逻辑了。

    1. console.log(1 > 2 < 3) // true      and     console.log(1 > 2 > 3) // false

    2. console.log(9 > 2 > 9 < 8 < 9) // true
    
    3. console.log(9 > 8 > 7 > 9 > 5) // false

有人可以详细解释一下 1 、 2 和 3 背后的原因吗?

【问题讨论】:

  • 您只能在两个值之间进行比较。拆分输出并使用 AND (&&) 或 OR (||) 运算符
  • @evolutionxbox 感谢您的回复,我理解您的观点,但在日志中,为什么我对 2 和 3 的看法是正确的?这就是混乱。
  • 它从左到右计算,1>2 为假,为零,零小于 3,console.log(1 > 2
  • 2. 的最后一次评估是 true &lt; 93.false &gt; 5
  • 谢谢@charly1212 我用下面的逻辑明白了你的意思。如我错了请纠正我 。 9 > 2 = 1 > 9 = 0 8 = 1 > 7 = 0 > 9 = 0 > 5 对于 2

标签: javascript logical-operators


【解决方案1】:

我想用下面的例子来解决这个问题。

1 < 2 < 3 // evaluates to true

但是

3 > 2 > 1 // evaluates to false

众所周知,js 是从左到右执行的。因此,在第一个例子中当声明

1 < 2 

被执行它评估为真。在编程中,true 指 1,false 指 0。那么在执行了上面的语句之后我们就有了真正的意思 1. 现在当这个结果与下一条语句结合起来时

true < 3 

那么简而言之,这句话的意思是

1 < 3 

因为 true 在编程中指的是 1。因为 1

进入下一个示例 3 > 2 > 1,其计算结果为 false,因为

3 > 2 // evaluates to true 

由于上面的语句是真的,那么在编程意义上我们得到 1(true),然后通过将这个结果与下一条语句结合起来

true > 1 // evaluates  to false

上面的说法很简短

1 > 1 

由于 1 不大于 1,因此它返回最终结果为 false。

3 > 2 = true
true > 1 = false

所以最后我们得出结论,通过编程意义,两个语句的计算结果不同,但在数学意义下,两者都是相同的。它是一个面试问题。希望你明白这一点。

如果需要任何其他信息,请告诉我。在其他情况下,它可能会被接受。

【讨论】:

  • 感谢 Muhammad 的宝贵回复,现在我明白其中的逻辑了。
  • @BHUPENDRASINGH 随时欢迎您。请将此答案标记为已接受
  • 在编程中,true 指 1,false 指 0,这可能是一个常见的约定,但在 Javascript 中它有一个名称。这称为类型强制
猜你喜欢
  • 1970-01-01
  • 2011-12-04
  • 2011-02-25
  • 2014-11-11
  • 2019-03-10
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多