聽到這里,去寫個 Demo 試一下。
為什么 console.log(null <= 0); 和 console.log(null >= 0); 這兩條的判斷是 true 呢?
首先我們來看一下 ES3 關于 內部相等性運算的算法實現。
接下來我們再來看一下 ES3 關于 內部關系運算的算法實現。
ES3 的 “>” 運算符:
ES3 的”>=” 運算符:
ES3 的 “==” 運算符 :
根據資料得出的內容
關系運算符 和 相等運算符 并不是一個類別的.
關系運算符,在設計上,總是需要運算元嘗試轉為一個number . 而相等運算符在設計上,則沒有這方面的考慮.
最重要的一點, 不要把 拿 a > b , a == b 的結果 想當然的去和 a >= b 建立聯系. 正確的符合最初設計思想的關系是 a > b 與 a >= b是一組 . a == b 和其他相等運算符才是一組. 比如 a === b , a != b, a !== b .
那么我們就可以反過來看這個問題了。
a >= b 運算符只是簡單的去對 a < b的結果取反. 我以為這是一個設計上的失誤的另一個理由是 undefined,在標準中,被單拎出來.細心的你,也一定發現了這一點. 對于undefined的設計, undefined > 0 , undefined < 0, undefined == 0 的結果是符合設計上,邏輯的一致性的. 而null是被遺漏的東西.直到今天早上.重新翻閱了ES3,5.相關章節. 才恍然大悟自己沒有從根本上理解到這個問題.
另外一個例子
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com