JavaScript === vs ==

Harshit Jindal 2023年10月12日
  1. JavaScript 中的鬆散相等運算子 (==)
  2. JavaScript 中的嚴格相等運算子 (===)
JavaScript === vs ==

比較運算子幫助我們確定兩個變數是否相等或遵循指定的標準。如果比較結果良好,則返回 true;否則,它返回 false。本教程解釋了比較運算子中最令人困惑的話題,並教授何時使用哪個等於運算子(=====)。

單等號 = 與雙等號 == 和三等號 === 完全不同,因為它是一個賦值操作,它們是比較運算子。因此,混淆通常在 ===== 之間。

JavaScript 中的鬆散相等運算子 (==)

== 運算子或相等運算子也稱為抽象比較運算子。之所以稱為抽象,是因為它只關心變數的值而不關心變數的型別。== 運算子在將變數值相互比較之前將它們轉換為相同的型別(型別強制),如果轉換的運算元相等,則返回 true。由於運算子必須執行型別轉換,因此它往往比 === 運算子慢一點。

現在,要了解何時使用哪個運算子,我們首先必須瞭解一些有關型別強制的知識。它有兩種型別:

  1. 顯式強制轉換: 使用內建方法通過程式碼顯式完成。例如:要將字串 "42" 轉換為數字,我們必須編寫 Number("42")。這樣,我們使用顯式的 Number() 型別轉換方法將字串轉換為數字。
  2. 隱式強制轉換: 它是由語言隱式完成的。它通常在我們將兩種不同型別的運算元與運算子一起使用時執行。例如:如果我們執行 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
Harshit Jindal avatar Harshit Jindal avatar

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

相關文章 - JavaScript Operator