簡(jiǎn)介
- “==”會(huì)先比較兩邊操作數(shù)的數(shù)據(jù)類型朽们,如果兩邊操作數(shù)的數(shù)據(jù)類型不相同留拾,會(huì)先嘗試一次類型轉(zhuǎn)換涕侈,然后再進(jìn)行數(shù)值比較
- “===”當(dāng)兩邊操作數(shù)的類型不相同時(shí),直接返回false
比較過(guò)程:
雙等號(hào)==:
- 如果兩個(gè)值類型相同秒旋,再進(jìn)行三個(gè)等號(hào)(===)的比較
- 如果兩個(gè)值類型不同约计,也有可能相等,需根據(jù)以下規(guī)則進(jìn)行類型轉(zhuǎn)換在比較:
- 如果一個(gè)是null迁筛,一個(gè)是undefined煤蚌,那么相等
- 如果一個(gè)是字符串,一個(gè)是數(shù)值细卧,把字符串轉(zhuǎn)換成數(shù)值之后再進(jìn)行比較
三等號(hào)===:
- 如果類型不同尉桩,就一定不相等
- 如果兩個(gè)都是數(shù)值,并且是同一個(gè)值酒甸,那么相等;如果其中至少一個(gè)是NaN赋铝,那么不相等插勤。(判斷一個(gè)值是否是NaN,只能使用isNaN( ) 來(lái)判斷)
- 如果兩個(gè)都是字符串革骨,每個(gè)位置的字符都一樣农尖,那么相等,否則不相等良哲。
- 如果兩個(gè)值都是true盛卡,或是false,那么相等
- 如果兩個(gè)值都引用同一個(gè)對(duì)象或是函數(shù)筑凫,那么相等滑沧,否則不相等
- 如果兩個(gè)值都是null,或是undefined巍实,那么相等
類比
“==”類似于Java中的"=="滓技,當(dāng)一邊是基本類型另一邊是包裝類時(shí),會(huì)自動(dòng)執(zhí)行裝箱拆箱操作棚潦,也就類似于js中的類型轉(zhuǎn)換令漂,然后再進(jìn)行數(shù)值對(duì)比