此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
严格相等(===)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
严格相等运算符(===)会检查它的两个操作数是否相等,并且返回一个布尔值结果。与相等运算符不同,严格相等运算符总是认为不同类型的操作数是不同的。
In this article
尝试一下
console.log(1 === 1);// Expected output: trueconsole.log("hello" === "hello");// Expected output: trueconsole.log("1" === 1);// Expected output: falseconsole.log(0 === false);// Expected output: false语法
js
x === y描述
严格相等运算符(=== 和!==)提供了严格相等判定语义。
- 如果操作数的类型不同,则返回
false。 - 如果两个操作数都是对象,只有当它们指向同一个对象时才返回
true。 - 如果两个操作数都为
null,或者两个操作数都为undefined,返回true。 - 如果两个操作数有任意一个为
NaN,返回false。 - 否则,比较两个操作数的值:
- 数字类型必须拥有相同的数值。
+0和-0会被认为是相同的值。 - 字符串类型必须拥有相同顺序的相同字符。
- 布尔运算符必须同时为
true或同时为false。
- 数字类型必须拥有相同的数值。
严格相等运算符与相等(==)运算符最显著的区别是,如果操作数的类型不同,== 运算符会在比较之前尝试将它们转换为相同的类型。
示例
>比较相同类型的操作数
js
"hello" === "hello"; // true"hello" === "hola"; // false3 === 3; // true3 === 4; // falsetrue === true; // truetrue === false; // falsenull === null; // true比较不同类型的操作数
js
"3" === 3; // falsetrue === 1; // falsenull === undefined; // false比较对象
js
const object1 = { key: "value",};const object2 = { key: "value",};console.log(object1 === object2); // falseconsole.log(object1 === object1); // true规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-equality-operators> |