簡單來說:==
代表相同,===
代表嚴格相同。
這麼理解: 當==
進行比較時候: 先檢查兩個運算元資料型別,如果相同, 則進行===
比較, 如果不同, 則進行一次型別轉換, 轉換成相同型別後再進行比較, 而===
比較時, 如果型別不同,直接就是false
。
雙等號==
的比較過程:
如果兩個值型別相同,再進行三個等號(===
)的比較;
在轉換不同的資料型別時,相等和不相等操作符遵循下列基本規則:
如果有乙個運算元是布林值,則在比較相等性之前先將其轉換為數值——false
轉換為0
,而true
轉換為1
;
如果乙個運算元是字串,另乙個運算元是數值,在比較相等性之前先將字串轉換為數值;
如果乙個運算元是物件,另乙個運算元不是,則呼叫物件的valueof()
方法,用得到的基本型別值按照前面的規則進行比較;
這兩個操作符在進行比較時則要遵循下列規則:
null
和undefined
是相等的;要比較相等性之前,不能將null
和undefined
轉換成其他任何值;
如果有乙個運算元是nan
,則相等操作符返回false
,而不相等操作符返回true
。即使兩個運算元都是nan
,相等操作符也返回false
;因為按照規則,nan
不等於nan
;
如果兩個運算元都是物件,則比較它們是不是同乙個物件。如果兩個運算元都指向同乙個物件,則相等操作符返回true
;否則,返回false
。
js中的 和 的區別
我們一般將兩個量進行比較時,用的比較多,今天看到乙個小題是 undefined和null是否相等,console.log undefined null 的值 為什麼?有人說 ecmascript認為undefined是null派生出來的,所以輸出為true。也有人說 1 null表示 沒有物件 即該...
JS中的! ! 的用法和區別。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var num 1 var str 1 var test 1 test num true 相同型別 相同值 test num true 相同型別 相同值 test num false test與nu...
JS中的! ! 的用法和區別。
js 與 的區別 1 對於string,number等基礎型別,和 是有區別的 1 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等,如果型別不同,其結果就是不等 2 同型別比較,直接進行 值 比較,兩者結果一樣 2 對於array,object等高階型別,和 是沒有區別的 進行 指標...