簡體   English   中英

JavaScript中可以使用多個比較運算符嗎?

[英]Are multiple comparison operators possible in javascript?

所以我在瀏覽器控制台中編寫

4 < 5

真正

4 < 5 < 10

真正

7 < 4 < 10

真正

前兩個語句看起來不錯,為什么最后一個語句也正確? 我會認為(如在數學中)該表達式將是“與”運算的? 任何人都可以將我指向MDN或類似的資源,談論這一點和規則嗎?

JavaScript的作用是首先評估左側:

4 < 5 => true

然后,其余部分繼續進行:

true < 10 => true

因為左側的true 強制數字1 ),並且1 < 10 === true (與數字比較時為false強制為0 )。

檢查這些看起來很滑稽的“蠢事”:

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

除了不可行的方法之外,還要使用多個copmparison運算符編寫連續檢查,而下一次比較是上一次比較的結果時,您可以為比較運算符使用數組和函數,並對每個運算符進行迭代配對檢查。 然后返回結果。

 const compare = (values, fn) => values.slice(1).every((b, i) => fn(values[i], b)); console.log(compare([7, 4, 10], (a, b) => a < b)); // false console.log(compare([4, 7, 10], (a, b) => a < b)); // true console.log(compare([2, 1, 0], (a, b) => a > b)); // true 

4 < 5評估為true 然后將true10進行比較。 Javascript將true轉換為1 ,並且1小於10結果為true

使用此邏輯,如果您嘗試4 < 5 < 3則也會以相同的邏輯返回true,而4 < 5 < 1將返回false。

 console.log( false < 10) // true console.log( true < 10) // true 

因為false(0)小於10,而true(1)也小於10。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM