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