== 和 === 他們倆到底有什么樣的卻別,其實(shí)在之前還是 == 接觸的比較多.包括在使用其他編程語言. === 似乎是在Javascript獨(dú)有的.那我們來看看他們到底有什么不同.
簡(jiǎn)單來說, == 不會(huì)檢查類型, === 會(huì)檢測(cè)比較的兩方是否類型相同. 因此, == 比較也是可以的. 但是在JS引擎下它們將轉(zhuǎn)換為相同的類型進(jìn)行比較.
=== 比較類型和值.因此,加入兩邊類型不同,答案永遠(yuǎn)是false. 例如比較兩個(gè)字符串,他們必須是同一字符的集合.另外的原始(number,boolean)必須分配同樣的值.
強(qiáng)制規(guī)則: 在JS引擎下隱式類型轉(zhuǎn)換使用 == 作比較.強(qiáng)制類型轉(zhuǎn)換使用下面的規(guī)則:
a) 如果兩個(gè)操作對(duì)象是同樣類型使用 ===
b) undefined == null
c) 如果一個(gè)操作對(duì)象是字符串,另外一個(gè)是數(shù)字,將字符串轉(zhuǎn)換為數(shù)字.
d) 如果一個(gè)是布爾類型,另外一個(gè)不是布爾類型,將布爾類型轉(zhuǎn)換為數(shù)字,再作比較.
e) 當(dāng)對(duì)象與一個(gè)字符串或者數(shù)字作比較,試著將對(duì)象轉(zhuǎn)換為一個(gè)原始類型,在試著比較.
當(dāng)比較對(duì)象時(shí),要小心注意,標(biāo)識(shí)符必須引用同樣的對(duì)象或者同樣的數(shù)組.
注意: NaN,null和undefined永遠(yuǎn)不=== 其他類型. NaN 甚至不等于(===)它自己.
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個(gè)人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個(gè)個(gè)人學(xué)習(xí)交流的平臺(tái),網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對(duì)作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請(qǐng)及時(shí)聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對(duì)此聲明的最終解釋權(quán)。