JavaScript 中 == 和 === 運算子的區別


JavaScript 廣泛用於建立互動式網頁。它有許多框架,例如 React JS、Angular JS、Node JS 等。像任何其他程式語言一樣,JavaScript 也提供算術運算子、關係運算符、比較運算子等。等號運算子,即“==”,就是一個這樣的比較運算子,它檢查 LHS 是否等於 RHS。此運算子存在於所有其他程式語言中,但在 JavaScript 中略有不同。這是因為 JavaScript 是一種弱型別語言,而所有其他語言都是強型別語言。由於 JS 是弱型別的,它不會比較給定的兩個變數的型別。這可以用強制轉換的概念來解釋。

JavaScript 中的強制型別轉換

讓我們考慮一下,我們需要新增兩個變數“x”和“y”,它們的值分別為 2 和 3。我們將得到 5 作為輸出。但是如果我們將“x”與一個字串相加呢?讓我們假設我們將變數“x”與一個空字串“ ”相加。

為了執行操作,兩個值都應該是相同型別的。因此,當我們執行它時,JavaScript 將這兩個值都視為字串並連線它們。這種考慮取決於所使用的運算子的型別。

如果我們對兩個數字執行減法運算,其中一個是字串型別,那麼它不會將它們連線起來。它從另一個數字中減去一個數字。因此,我們可以說 JavaScript 根據所執行的操作隱式轉換資料型別。這稱為強制型別轉換。

現在,讓我們將此概念應用於雙等號 (==) 運算子。考慮兩個變數“x”和“y”,它們的值都是 3,但“x”變數中的“3”是字串型別。

x = "3"
y = 3

假設我們比較“x”和“y”,即“x == y”。由於一個是字串型別,另一個是數字型別,我們期望輸出為false,就像在所有其他程式語言中一樣。但在 JavaScript 中,我們得到“true”。

這是因為 JavaScript 中的雙等號 (==) 不考慮型別,並使用強制轉換的概念將其中一個數據型別轉換為另一個數據型別,然後執行操作。但並非總是建議隱式轉換資料型別。

為了克服這個問題,我們使用三等號 (===) 代替雙等號。三等號運算子是強型別運算子,它考慮兩個變數的資料型別以便比較它們。

如果我們使用三等號來比較“x === y”,那麼我們將得到結果“false”。建議始終使用三等號運算子,因為它會給出正確的輸出。

現在讓我們來看幾個例子,以便更好地理解這個概念:

示例 1

如果我們比較兩個相同的字串,那麼雙等號和三等號都會輸出 true。

str1 = "example"
str2 = "example"
str1 == str2   	// True
str1 === str2   	// True 

示例 2

如果我們比較字串和數字,雙等號和三等號都會輸出 false。

str1 = "example"
str2 = 3 
str1 == str2   	// False
str1 === str2   	// False

示例 3

如果我們比較兩個相同的數字,其中一個是字串型別,那麼雙等號 (==) 輸出 true,而三等號 (===) 輸出 false。

str1 = "7"
str2 = 7
str1 == str2   // True
str1 === str2   // False

示例 4

讓我們取兩個變數var1var2,前者將“8”儲存為字串,後者值為 7。如果我們減去這兩個變數並將其與 1 進行比較,則雙等號和三等號都會輸出 true。當我們執行減法時,字串值會被 JavaScript 隱式轉換為數字型別。因此,結果的型別變為數字,兩者都輸出 true。

var1 = "8"
var2 = 7
y = var1 – var2
y==1   	// True
y === 1   	// True 

示例 5

如果我們將零與 false 進行比較,雙等號 (==) 返回 true,而三等號 (===) 返回 false。

0 == False   	// True
0 === False   	// False

這是因為“0”和 false 的值相同,即 false。因此,雙等號會隱式轉換其中一個。而對於三等號,“0”是數字型別,false 是布林型別。因此,它輸出 false。

區別:JavaScript 中的雙等號 (==) 和三等號 (===)

下表重點介紹了 JavaScript 中雙等號 (==) 和三等號 (===) 的主要區別:

特性

雙等號 (==)

三等號 (===)

功能

雙等號 (==) 只比較兩個變數的值,而不比較它們的資料型別。

三等號 (===) 檢查兩個變數的值和資料型別。

強制型別轉換

它遵循強制型別轉換的概念。

它不遵循強制型別轉換的概念。

型別轉換

它隱式轉換型別以執行操作。

它不會轉換它們原來的資料型別。

弱型別或強型別

它是弱型別的。

它是強型別的。

結論

雙等號和三等號是 JavaScript 中的比較運算子,用於比較給定的兩個變數或值是否相等。雙等號 (==) 運算子是弱型別的,因此它只比較值。相反,三等號 (===) 運算子是強型別的,因此它會考慮它們的資料型別以及值。

更新於:2023年6月23日

8K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告