Object.is()

Статичний метод Object.is() визначає, чи є два значення тотожними.

Спробуйте його в дії

Синтаксис

Object.is(value1, value2)

Параметри

value1

Перше значення для порівняння.

value2

Друге значення для порівняння.

Повернене значення

Булеве значення, яке вказує, чи є два аргументи тотожними.

Опис

Object.is() визначає, чи є обидва значення тотожними. Два значення є тотожними, якщо виконується одна з наведених умов:

  • обидва undefined

  • обидва null

  • обидва true чи обидва false

  • обидва рядки мають однакову довжину, і містять ті самі символи у тому ж порядку

  • обидва один і той же об'єкт (це означає, що обидва значення посилаються на той самий об'єкт в пам'яті)

  • обидва BigInt з однаковим числовим значенням

  • обидва символи, які посилаються на те саме символьне значення.

  • обидва числа та

    • обидва +0
    • обидва -0
    • обидва NaN
    • або обидва не 0, не NaN, і мають те саме значення

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
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також