Object.is()
Статичний метод Object.is()
визначає, чи є два значення тотожними.
Спробуйте його в дії
Синтаксис
Object.is(value1, value2)
Параметри
value1
Перше значення для порівняння.
value2
Друге значення для порівняння.
Повернене значення
Булеве значення, яке вказує, чи є два аргументи тотожними.
Опис
Object.is()
визначає, чи є обидва значення тотожними. Два значення є тотожними, якщо виконується одна з наведених умов:
-
обидва
undefined
-
обидва
null
-
обидва
true
чи обидваfalse
-
обидва рядки мають однакову довжину, і містять ті самі символи у тому ж порядку
-
обидва один і той же об'єкт (це означає, що обидва значення посилаються на той самий об'єкт в пам'яті)
-
обидва BigInt з однаковим числовим значенням
-
обидва символи, які посилаються на те саме символьне значення.
-
обидва числа та
Object.is()
не є еквівалентним оператору ==
. Оператор ==
застосовує перед перевіркою на рівність до обох значень (якщо їх типи не є однаковими) різноманітні перетворення (через що, наприклад "" == false
повертає true
), однак Object.is()
не виконує жодного перетворення.
Object.is()
також не є еквівалентом оператора ===
. Єдина відмінність між Object.is()
та ===
полягає в способі обробки 0
та NaN
. Оператори ===
(та ==
) вважають значення -0
та +0
рівними, але два NaN
- не рівними одне одному.
Приклади
Використання Object.is()
// Приклад 1: Результат оцінювання є тим самим, що і з ===
Object.is(25, 25); // true
Object.is("foo", "foo"); // true
Object.is("foo", "bar"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
Object.is([], []); // false
const foo = { a: 1 };
const bar = { a: 1 };
const sameFoo = foo;
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(foo, sameFoo); // true
// Приклад 2: цифра 0
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true
// Приклад 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
is
|
Chrome Full support 30 | Edge Full support 12 | Firefox Full support 22 | Internet Explorer No support Ні | Opera Full support 17 | Safari Full support 9 | WebView Android Full support 37 | Chrome Android Full support 30 | Firefox for Android Full support 22 | Opera Android Full support 18 | Safari on iOS Full support 9 | Samsung Internet Full support 2.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |