[英]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
。 然后將true
與10
進行比較。 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.