【问题标题】:Why does 3 > 2 > 1 return false while 1 < 2 < 3 returns true? [duplicate]为什么 3 > 2 > 1 返回 false 而 1 < 2 < 3 返回 true? [复制]
【发布时间】:2019-01-09 21:31:39
【问题描述】:

为什么3&gt;2&gt;1 返回false1 &lt; 2 &lt; 3 返回true

console.log(1 < 2 < 3);
console.log(3 > 2 > 1);

【问题讨论】:

    标签: javascript if-statement


    【解决方案1】:

    由于1 &lt; 2 的计算结果为true3 &gt; 2 的计算结果为true,所以你基本上是在做:

    console.log(true < 3);
    console.log(true > 1);

    并且true 被转换为1,因此结果。

    【讨论】:

    【解决方案2】:

    因为它从左到右解释,因为它试图转换为相同的类型。

    1 &lt; 2 &lt; 3 变为 true &lt; 3,因为我们在比较数字,所以将其转换为 1 &lt; 3,这是事实。

    3 &gt; 2 &gt; 1 变为 true &gt; 1,因为我们在比较数字,所以将其转换为 1 &gt; 1,这是错误的。

    【讨论】:

      【解决方案3】:

      那是因为它是从左到右计算的,所以它相当于下面的命令:

      console.log(true < 3);
      console.log(true > 1);

      【讨论】:

        【解决方案4】:

        编译器会这样读 $console.log((1 &lt; 2) &lt; 3)$ console.log(( 3&gt;2 ) &gt; 1)

        在第一种情况下:$ console.log(1 &lt; 2 &lt; 3) 第一个编译器执行 1

        以相同的逻辑执行第二个,它会给你错误。

        【讨论】:

          【解决方案5】:

          运算符“”关联性是从左到右的所以

          查看以下链接 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

          console.log(1 console.log(true (true 表示 1)=> console.log(1 答案是正确的

          console.log(3 > 2 > 1) ==> console.log(true >1)==> (true 表示 1)=> console.log(1 >1); 答案是错误的

          console.log(3 > 2 >=1) ==> console.log(true >=1)==> (true 表示 1)=> console.log(1 = 1 ); 答案是正确的

          【讨论】:

            猜你喜欢
            • 2023-01-16
            • 2018-01-31
            • 1970-01-01
            • 2019-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-08
            相关资源
            最近更新 更多