![](/img/trans.png)
[英]Why doesn't JavaScript have strict greater/less than comparison operators?
[英]Strict Value Comparison (less/greater than)
我很确定以下行为不正确(至少在我的脑海中)因为一些真实的疯狂:
var x = 5;
0 < x < 10 // True, and returns true.
0 < x < 2 // False, and returns true.
0 < x < 0 // False, and returns false.
我的方法是,(0 <5)评估为true,(true <2)也评估为true(即1 <2)。 我用第三个语句对此进行了测试,这似乎证实了我的理论。 现在问的问题是:有没有办法让这个“工作”没有大量的额外代码?
“......有没有办法让这个'工作'没有大量的额外代码?”
当然,使用&&
......
(0 < x) && (x < 10)
如果需要,可以删除括号。
正如您所注意到的,大多数编程语言都不会实现“之间”,因为您将以数学方式编写它。 而是将比较分成两部分,每次只比较两个元素。
var x = 5;
0 < x && x < 10
0 < x && x < 2
0 < x && x < 2
因此,第一行显示“零小于x且x小于十”。 如果您不确定表达式的评估顺序,将作为分组。
(0 < x) && (x < 10)
问题源于<是二元运算符的事实。
这意味着其中一个<一次评估,而不是两者。
这意味着无论评估的顺序如何(IIRC是L到R),其中一个比较都是错误的。
因为这是CODE。
不是代数。
否则,巧妙地使用&&运算符,正如其他答案所讨论的那样,可以简化您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.