![](/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.