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

Оператор строгої рівності (===) перевіряє, чи є два операнди рівними, повертаючи результат типу Boolean. На відміну від оператора рівності, оператор строгої рівності завжди вважає операнди різних типів різними.

Синтаксис

x === y

Опис

Оператори строгої рівності (=== та !==) використовують алгоритм строгої рівності для порівняння двох операндів.

  • Якщо операнди належать до різних типів, повернути false.
  • Якщо обидва операнди є об'єктами, повернути true тільки якщо вони посилаються на один і той самий об'єкт.
  • Якщо обидва операнди дорівнюють null або обидва операнди дорівнюють undefined, повернути true.
  • Якщо будь-який з операндів є NaN, повернути false.
  • В інших випадках, порівняти значення двох операндів:
    • Числа повинні мати однакові числові значення. +0 та -0 вважаються одним значенням.
    • Рядки повинні мати однакові символи в однаковому порядку.
    • Значення Boolean повинні обидва дорівнювати true або обидва дорівнювати false.

Найпомітніша відмінність між цим оператором та оператором рівності (==) полягає в тому, що, якщо операнди належать до різних типів, оператор == намагається привести їх до одного типу перед порівнянням.

Приклади

Порівняння операндів одного типу

console.log("привіт" === "привіт");   // true
console.log("привіт" === "агов");    // false

console.log(3 === 3);               // true
console.log(3 === 4);               // false

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

console.log(null === null);         // true

Порівняння операндів різних типів

console.log("3" === 3);           // false

console.log(true === 1);          // false

console.log(null === undefined);  // false

Порівняння об'єктів

const object1 = {
  name: "привіт"
}

const object2 = {
  name: "привіт"
}

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

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Equality operators' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Strict equality (a === b)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Див. також