Javascript表达式:double大于x且大于y

Arm*_*tov 0 javascript boolean-logic boolean-expression

所以我想知道是否有办法做双倍大于,比如:

if(x > y > z) { ... }
Run Code Online (Sandbox Code Playgroud)

然后我看到这个 表达式"超过x而不是y"?

但后来我在控制台中尝试了以下表达式并获得了一个奇怪的结果:

(5 < 2 < 1) // returned true
(5 > 2 > 1) // returned false
Run Code Online (Sandbox Code Playgroud)

怎么样?

更新:我知道你不能这样做"(x> y> z)",只是想要解释奇怪的结果.

Jua*_*tés 6

你需要两个独立的条件,比如5<2 && 2<1为了做你想做的事情.如果没有两个条件,则将第一个条件的结果与第二个条件的右侧进行比较.

为什么?

对于无法解释的行为,我相信为什么它返回它返回的原因的解释是javascript在数值运算中使用时处理布尔值(等等)的方式,换句话说,javascript会将你的布尔值转换为0或1,有在这里的几个问题中有很多这样的例子,例如这个,你可以做到+false并得到0例如.

(5 < 2 < 1)true因为:

  • 5<2 首先解决,返回 false
  • false 被转换为数字,返回 0
  • 0<1 将返回 true

(5 > 2 > 1)false因为:

  • 5>2 首先解决,将返回 true
  • true 被投射到一个数字,将返回 1
  • 1>1 将返回 false