簡(jiǎn)單來說: == 代表相同, ===代表嚴(yán)格相同, 為啥這么說呢,
這么理解: 當(dāng)進(jìn)行雙等號(hào)比較時(shí)候: 先檢查兩個(gè)操作數(shù)數(shù)據(jù)類型,如果相同, 則進(jìn)行===比較, 如果不同, 則愿意為你進(jìn)行一次類型轉(zhuǎn)換, 轉(zhuǎn)換成相同類型后再進(jìn)行比較, 而===比較時(shí), 如果類型不同,直接就是false.
操作數(shù)1 == 操作數(shù)2, 操作數(shù)1 === 操作數(shù)2
比較過程:
雙等號(hào)==:
(1)如果兩個(gè)值類型相同,再進(jìn)行三個(gè)等號(hào)(===)的比較
(2)如果兩個(gè)值類型不同,也有可能相等,需根據(jù)以下規(guī)則進(jìn)行類型轉(zhuǎn)換在比較:
1)如果一個(gè)是null,一個(gè)是undefined,那么相等
2)如果一個(gè)是字符串,一個(gè)是數(shù)值,把字符串轉(zhuǎn)換成數(shù)值之后再進(jìn)行比較
三等號(hào)===:
(1)如果類型不同,就一定不相等
(2)如果兩個(gè)都是數(shù)值,并且是同一個(gè)值,那么相等;如果其中至少一個(gè)是NaN,那么不相等。(判斷一個(gè)值是否是NaN,只能使用isNaN( ) 來判斷)
(3)如果兩個(gè)都是字符串,每個(gè)位置的字符都一樣,那么相等,否則不相等。
(4)如果兩個(gè)值都是true,或是false,那么相等
(5)如果兩個(gè)值都引用同一個(gè)對(duì)象或是函數(shù),那么相等,否則不相等
(6)如果兩個(gè)值都是null,或是undefined,那么相等
用localStorage、sessionStorage只能做字符串存取,存入一個(gè)整數(shù),會(huì)自動(dòng)轉(zhuǎn)成字符串存起來,取出來可以用雙等于直接和整數(shù)進(jìn)行比較,但是如果是true或false,用雙等號(hào)比較也不會(huì)相等,因?yàn)?true" == true返回是false