js裡==和===有什麼區別?愛碼騎士2020-02-24 22:11:29

區別是當進行雙等號比較時候: 先檢查兩個運算元資料型別,如果相同, 則進行===比較, 如果不同, 則願意為你進行一次型別轉換, 轉換成相同型別後再進行比較, 而===比較時, 如果型別不同,直接就是false。

運算元1 == 運算元2, 運算元1 === 運算元2

比較過程:

雙等號==:

(1)如果兩個值型別相同,再進行三個等號(===)的比較

(2)如果兩個值型別不同,也有可能相等,需根據以下規則進行型別轉換在比較:

1)如果一個是null,一個是undefined,那麼相等

2)如果一個是字串,一個是數值,把字串轉換成數值之後再進行比較

三等號===:

(1)如果型別不同,就一定不相等

(2)如果兩個都是數值,並且是同一個值,那麼相等;如果其中至少一個是NaN,那麼不相等。(判斷一個值是否是NaN,只能使用isNaN( ) 來判斷)

(3)如果兩個都是字串,每個位置的字元都一樣,那麼相等,否則不相等。

(4)如果兩個值都是true,或是false,那麼相等

(5)如果兩個值都引用同一個物件或是函式,那麼相等,否則不相等

(6)如果兩個值都是null,或是undefined,那麼相等

js裡==和===有什麼區別?tfodt102322019-10-18 00:52:16

==:運算子稱作相等,用來檢測兩個運算元是否相等,這裡的相等定義的非常寬鬆,可以允許進行型別轉換===:用來檢測兩個運算元是否嚴格相等1、對於string,number等基礎型別,==和===是有區別的不同型別間比較,==之比較“轉化成同一型別後的值”看“值”是否相等,===如果型別不同,其結果就是不等同型別比較,直接進行“值”比較,兩者結果一樣2、對於Array,Object等高階型別,==和===是沒有區別的3、基礎型別與高階型別,==和===是有區別的對於==,將高階轉化為基礎型別,進行“值”比較,因為型別不同,===結果為false