JavaScript中的“==”和“===”等操作符有何不同?

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

JavaScript等號運算子

學習 JavaScript 等號運算子的基礎知識 這些運算子接受兩個值並返回布林值: == 檢查是否相等 != 檢查是否不相等 === 檢查是否嚴格相等 !== 檢查是否嚴格不相等 現在來談談我們所謂的“嚴格”。在非嚴格檢查中,第二個運算元在進行比較之前會被轉換為第一個運算元的類型。嚴格模式則會阻止這種轉換。 舉例如下: const a = true a == true // true a === true // true 1 == 1 // true 1 == '1' // true 1 === 1 // true 1 === '1' // false 無法檢查對象的相等性:兩個對象永遠不相等。唯一可能為真的情況是兩個變量引用了同一個對象。 還有一些需要注意的特殊情況:NaN 始終與 NaN 不相等。 NaN == NaN // false 在非嚴格模式下,null 和 undefined 的值是相等的: null == undefined // true null === undefined // false