严格平等 (===)

严格相等 (===) 运算符检查两个操作数是否相等,并返回布尔结果。与 equality 运算符不同,严格相等运算符始终认为不同类型的操作数是不同的。

¥The strict equality (===) operator checks whether its two operands are equal, returning a Boolean result. Unlike the equality operator, the strict equality operator always considers operands of different types to be different.

Try it

语法

¥Syntax

js
x === y

描述

¥Description

严格相等运算符(===!==)提供 IsStrictlyEqual 语义。

¥The strict equality operators (=== and !==) provide the IsStrictlyEqual semantic.

  • 如果操作数类型不同,则返回 false
  • 如果两个操作数都是对象,则仅当它们引用同一对象时才返回 true
  • 如果两个操作数都是 null 或两个操作数都是 undefined,则返回 true
  • 如果任一操作数为 NaN,则返回 false
  • 否则,比较两个操作数的值:
    • 数字必须具有相同的数值。+0-0 被认为是相同的值。
    • 字符串必须具有相同顺序的相同字符。
    • 布尔值必须都是 true 或都是 false

该运算符与 equality (==) 运算符之间最显着的区别是,如果操作数属于不同类型,则 == 运算符会在比较之前尝试将它们转换为相同类型。

¥The most notable difference between this operator and the equality (==) operator is that if the operands are of different types, the == operator attempts to convert them to the same type before comparing.

示例

¥Examples

比较相同类型的操作数

¥Comparing operands of the same type

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

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

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

null === null; // true

比较不同类型的操作数

¥Comparing operands of different types

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

比较对象

¥Comparing objects

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

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

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

规范

Specification
ECMAScript Language Specification
# sec-equality-operators

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看