--- 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")}}