严格相等 (===)
**严格相等 (===
)** 运算符检查其两个操作数是否相等,返回布尔结果。与 相等 运算符不同,严格相等运算符始终认为不同类型的操作数不同。
试一试
语法
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 语言规范 # sec-equality-operators |
浏览器兼容性
BCD 表格仅在浏览器中加载