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