Строгое равенство (===)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Оператор строгого равенства (===) проверяет, являются ли два его операнда равными, возвращая логическое значение. В отличие от оператора нестрогого равенства всегда считает операнды разных типов неравными.

Интерактивный пример

Синтаксис

js
x === y

Описание

Операторы строгого равенства (=== и !==) производят проверку равенства типов и значений.

  • Если типы операндов различаются, возвращает 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

Спецификации

Specification
ECMAScript Language Specification
# sec-equality-operators

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также