在JavaScript中,我們可以使用兩種不同的操作符來檢查對象的相等性,它們分別是“==”和“===”。
這兩者基本上做的是相同的事情,但它們之間有一個很大的不同之處。
“===”用於檢查兩個值是否相等。如果它們是對象,則這兩個對象必須是相同的類型。正如大家所知,JavaScript是動態類型語言,但是你需要了解一些基本的類型。
具體而言,我們有“值類型”(布爾型、null、undefined、字符串和數字)和“引用類型”(數組、對象、函數)。
如果兩個值的類型不同,則“===”將返回false。
如果它們是相同的類型,JavaScript將進一步檢查它們是否相等。
對於引用類型來說,這意味著這兩個值必須引用相同的對象/數組/函數,而不僅僅是具有相同的值。
而“==”則不同,它會嘗試將類型轉換為相匹配的類型。
這就是為什麼你會得到以下結果:
false == '0' // true
false === '0' // false
null == undefined // true
null === undefined // false
根據我的經驗,在97%的情況下,你會希望使用“===”,除非“==”與你想要的完全相同。它的缺陷和邊界情況較少。
同樣,對於“!=”和“!==”,它們執行的是相同的操作,只是取反的結果。
總是使用“!==”作為默認選擇。