前端面試之你不知道的==操作符,!=操作符

? ? ? ?年后第一天開工,在刷面試題的時(shí)候看到了這么一道題,null == 0居然是false,之前的常識(shí)不是,null、undefined、0、-0、NaN、‘' 這幾個(gè)值會(huì)遇到==操作符會(huì)轉(zhuǎn)換成false嗎, 然后百度了一下了解了null在==比較不進(jìn)行類型轉(zhuǎn)換,然后在控制臺(tái)隨便嘗試的時(shí)候發(fā)現(xiàn)null == undefined居然是true,不是不轉(zhuǎn)換嗎,這這這真是毀三觀啊,在我百思不得其解的時(shí)候我翻開了那本神奇的紅皮書,澤拉斯大神竟然早就把這些寫在書里了,試問我也是看過幾遍的人,但是每次都會(huì)把前三章選擇性的直接忽略,以后真的要戒驕戒躁踏踏實(shí)實(shí)的學(xué)好基礎(chǔ)知識(shí)啊,下面我就詳細(xì)的分析一下這兩個(gè)操作符的使用規(guī)則:

? ? ? 1.如果等號(hào)兩邊有布爾值,先將布爾值轉(zhuǎn)成數(shù)字(true轉(zhuǎn)成1,false轉(zhuǎn)成0),在進(jìn)行比較。

? ? ? 例:false == 0;會(huì)將false先轉(zhuǎn)換為數(shù)字0,再與0作比較

? ? ? ? ? ? ? true == 1;會(huì)將true先轉(zhuǎn)換為數(shù)字1,再與1作比較

? ? ? ? ? ? ? 因此 false == 1;//false? ? true==10;//false

2.如果一個(gè)是字符串一個(gè)是數(shù)值,現(xiàn)將字符串轉(zhuǎn)成數(shù)值在進(jìn)行比較。

? ? ? ? 例:1=='1';//true? ? ?

? ? ? ? ? ? ? ? 2=='2';//true?

? ? ? ? ? ? ? ? 1=='2';//false

? ? ? ? ? ? ? ? ''==0;//true 這里需要注意的是空字符串會(huì)直接轉(zhuǎn)成數(shù)字0

? ? ? ? ? ? ? ? //結(jié)合第一條和第二條就能得出:false =='0'//true

3.如果有對(duì)象,先調(diào)用對(duì)象的valueof()方法,再作為基本類型進(jìn)行比較。

4.null和undefined是相等的。undefined==null //這一條就是我上面所困惑的問題

5.如果比較雙方有null和undefined,不能將其轉(zhuǎn)換為其他值。

? ? ? ? ? ? 這條也就表明除了他們倆自身相比較,其他的任何值與undefined,null做==比較返回值都是false,比如:

? ? ? ? ? ? null == false//false? ? undefined == 0//false?

6.如果有NaN,相等操作符返回false,不相等操作符返回true,如果兩個(gè)值都為NaN,返回false,也就是說NaN不等于本身。

7.如果兩個(gè)操作數(shù)都為對(duì)象,比較的是他們是否指向同一個(gè)對(duì)象。對(duì)象比較的是他們的引用而不是值。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容