JavaScript === vs ==
 
比較運算子幫助我們確定兩個變數是否相等或遵循指定的標準。如果比較結果良好,則返回 true;否則,它返回 false。本教程解釋了比較運算子中最令人困惑的話題,並教授何時使用哪個等於運算子(== 或 ===)。
單等號 = 與雙等號 == 和三等號 === 完全不同,因為它是一個賦值操作,它們是比較運算子。因此,混淆通常在 == 和 === 之間。
JavaScript 中的鬆散相等運算子 (==)
== 運算子或相等運算子也稱為抽象比較運算子。之所以稱為抽象,是因為它只關心變數的值而不關心變數的型別。== 運算子在將變數值相互比較之前將它們轉換為相同的型別(型別強制),如果轉換的運算元相等,則返回 true。由於運算子必須執行型別轉換,因此它往往比 === 運算子慢一點。
現在,要了解何時使用哪個運算子,我們首先必須瞭解一些有關型別強制的知識。它有兩種型別:
- 顯式強制轉換: 使用內建方法通過程式碼顯式完成。例如:要將字串 "42"轉換為數字,我們必須編寫Number("42")。這樣,我們使用顯式的Number()型別轉換方法將字串轉換為數字。
- 隱式強制轉換: 它是由語言隱式完成的。它通常在我們將兩種不同型別的運算元與運算子一起使用時執行。例如:如果我們執行 1 + ""。有一個數字和一個字串不能直接相加,所以 JavaScript 型別將數字轉換為字串,因為這是它們相加的唯一方式,並返回一個字串"1"。
23 == '23'         // returns true
true + false == 1  // returns true
undefined ==
    null         // returns true
        [] == 0  // returns true
JavaScript 中的嚴格相等運算子 (===)
=== 運算子或恆等運算子也稱為嚴格比較運算子。之所以稱為嚴格,是因為它只有在兩個運算元的型別和值都相同時才返回真。它不執行任何型別的轉換;因此,它往往比 == 運算子更快。
true === true  // returns true
true === 1     // returns false
因此,選擇 == 或 === 運算子的決定取決於型別強制。如果不熟悉型別強制,那麼他應該堅持使用嚴格相等運算子。
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn