--- title: Рівність (==) slug: Web/JavaScript/Reference/Operators/Equality tags: - JavaScript - Довідка - Оператор translation_of: Web/JavaScript/Reference/Operators/Equality ---
Оператор рівності (==) перевіряє, чи два операнди рівні, повертаючи результат типу Boolean. На відміну від оператору строгої рівності, він намагається перетворити для порівняння операнди, які належать до різних типів.
x == y
Оператори рівності (== та !=) використовують алгоритм абстрактної рівності для порівняння двох операндів. Його можна загалом описати наступним чином:
true тільки якщо обидва операнди посилаються на той самий об'єкт.null, а інший undefined, повертати true.Boolean, перетворити операнд Boolean на 1, якщо він дорівнює true, і на +0, якщо він дорівнює false.valueOf() та toString().String: повернути true тільки якщо обидва операнди мають однакові символи у однаковому порядку.Number: повернути true тільки якщо обидва операнди мають однакове значення. +0 та -0 вважаються однаковим значенням. Якщо будь-який з операндів є NaN, повернути false.Boolean: повернути true тільки якщо обидва операнди дорівнюють true або обидва дорівнюють false.Найбільш помітна відмінність між цим оператором та оператором строгої рівності (===) полягає в тому, що оператор строгої рівності не намагається виконувати перетворення типів. Натомість, оператор строгої рівності завжди вважає операнди різних типів різними.
1 == 1; // true "привіт" == "привіт"; // true
"1" == 1; // true 1 == "1"; // true 0 == false; // true 0 == null; // false 0 == undefined; // false null == undefined; // true const number1 = new Number(3); const number2 = new Number(3); number1 == 3; // true number1 == number2; // false
const object1 = {"key": "value"}
const object2 = {"key": "value"};
object1 == object2 // false
object2 == object2 // true
Зауважте, що рядки, створені за допомогою new String(), є об'єктами. Якщо ви порівняєте один з них з рядковим літералом, об'єкт String буде перетворений на рядковий літерал, і їхній вміст буде порівнюватись. Однак, якщо обидва операнди є об'єктами String, вони порівнюються як об'єкти та мусять посилатись на один і той самий об'єкт, щоб вважатись однаковими:
const string1 = "привіт";
const string2 = String("привіт");
const string3 = new String("привіт");
const string4 = new String("привіт");
console.log(string1 == string2); // true
console.log(string1 == string3); // true
console.log(string2 == string3); // true
console.log(string3 == string4); // false
console.log(string4 == string4); // true
const d = new Date('December 17, 1995 03:24:00');
const s = d.toString(); // наприклад: "Sun Dec 17 1995 03:24:00 GMT-0800 (Pacific Standard Time)"
console.log(d == s); //true
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-equality-operators', 'Equality operators')}} |
{{Compat("javascript.operators.equality")}}