嚴格相等 (===)

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

嚴格相等 (===) 運算子檢查其兩個運算元是否相等,並返回一個布林值結果。與相等運算子不同,嚴格相等運算子始終認為不同型別的運算元是不同的。

試一試

console.log(1 === 1);
// Expected output: true

console.log("hello" === "hello");
// Expected output: true

console.log("1" === 1);
// Expected output: false

console.log(0 === false);
// Expected output: false

語法

js
x === y

描述

嚴格相等運算子 (===!==) 提供了 IsStrictlyEqual 語義。

  • 如果運算元的型別不同,則返回 false
  • 如果兩個運算元都是物件,則僅當它們引用同一個物件時才返回 true
  • 如果兩個運算元都是 null 或兩個運算元都是 undefined,則返回 true
  • 如果任一運算元為 NaN,則返回 false
  • 否則,比較兩個運算元的值
    • 數字必須具有相同的數值。 +0-0 被認為是相同的值。
    • 字串必須具有相同順序的相同字元。
    • 布林值必須都是 true 或都是 false

此運算子與相等 (==) 運算子之間最顯著的區別是,如果運算元的型別不同,== 運算子會嘗試在比較之前將它們轉換為相同的型別。

示例

比較相同型別的運算元

js
"hello" === "hello"; // true
"hello" === "hola"; // false

3 === 3; // true
3 === 4; // false

true === true; // true
true === false; // false

null === null; // true

比較不同型別的運算元

js
"3" === 3; // false
true === 1; // false
null === undefined; // false
3 === new Number(3); // false

比較物件

js
const object1 = {
  key: "value",
};

const object2 = {
  key: "value",
};

console.log(object1 === object2); // false
console.log(object1 === object1); // true

規範

規範
ECMAScript® 2026 語言規範
# sec-equality-operators

瀏覽器相容性

另見