Javascript表达式:大于x和大于y的两倍
所以我想知道是否有一种方法可以做一个双大于,像这样:Javascript表达式:大于x和大于y的两倍,javascript,boolean-logic,boolean-expression,Javascript,Boolean Logic,Boolean Expression,所以我想知道是否有一种方法可以做一个双大于,像这样: if(x > y > z) { ... } if(gt(x, y, z)) { ... } 然后我看到了这个 但后来我在控制台中尝试了以下表达式,得到了一个奇怪的结果: (5 < 2 < 1) // returned true (5 > 2 > 1) // returned false (51)//返回false 怎么做 更新:我知道你不能这么做“(x>y>z)”,只是想解释一下奇怪的结果。不。你
if(x > y > z) { ... }
if(gt(x, y, z)) { ... }
然后我看到了这个
但后来我在控制台中尝试了以下表达式,得到了一个奇怪的结果:
(5 < 2 < 1) // returned true
(5 > 2 > 1) // returned false
(5<2<1)//返回true
(5>2>1)//返回false
怎么做
更新:我知道你不能这么做“(x>y>z)”,只是想解释一下奇怪的结果。不。你不能用JavaScript来做这件事。尽管它非常有用,但您仍然需要使用
x>y&&y>z
也就是说,为了解释你的结果:
5 < 2 gives false
false casts to 0
0 < 1 is true
您需要两个独立的条件,例如
5if((5>2)和&(2>1))我会试试{
}不确定为什么另一种方法不起作用,但因此实现应该是以另一种方法编写的代码的适当替代品。至于“执行双大于”的方法,您可以定义一个函数:
function gt () {
var prev = arguments[0];
return !([].slice.call(arguments, 1).some(function (arg) {
var ret = prev <= arg;
prev = arg;
return ret;
}));
}
只需使用x>y&&y>z
。您期望得到什么结果?JavaScript从左到右读取,使您的代码实际上:(5<2)<1
,这将变成false<1
,并将其转换为0<1
。
if(gt(x, y, z)) { ... }