Spec-Zone.ru › JavaScript

Object.is()

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Object.is() определяет, являются ли два значения одинаковыми значениями.

Попробуйте

console.log(Object.is("1", 1));
// Expected output: false

console.log(Object.is(NaN, NaN));
// Expected output: true

console.log(Object.is(-0, 0));
// Expected output: false

const obj = {};
console.log(Object.is(obj, {}));
// Expected output: false

Синтаксис

Object.is(value1, value2)

Параметры

value1
Первое значение для сравнения.
value2
Второе значение для сравнения.

Возвращаемое значение

Булево значение, указывающее, являются ли два аргумента одинаковыми значениями.

Описание

Object.is() определяет, являются ли два значения одинаковыми значениями. Два значения считаются одинаковыми, если выполняется одно из следующих условий:

  • оба undefined
  • оба null
  • оба true или оба false
  • обе строки одинаковой длины с одинаковыми символами в том же порядке
  • оба являются одним и тем же объектом (то есть оба значения ссылаются на один и тот же объект в памяти)
  • оба BigInts с одинаковым числовым значением
  • оба символа, которые ссылаются на одно и то же символьное значение
  • оба числа и
    • оба +0
    • оба -0
    • оба NaN
    • или оба ненулевые, не NaN, и имеют одинаковое значение

Object.is() не эквивалентен оператору ==. Оператор == применяет различные преобразования типов (приведения) к обеим сторонам (если они не одного типа) перед проверкой на равенство (что приводит к такому поведению, как "" == false, являющееся true), но Object.is() не принуждает к преобразованию ни одно из значений.

Object.is() также не эквивалентен оператору ===. Единственное различие между Object.is() и === заключается в их обработке знаковых нулей и значений NaN. Оператор === (и оператор ==) рассматривает числовые значения -0 и +0 как равные, но рассматривает NaN как неравные друг другу.

Примеры

Использование Object.is()

// Case 1: Evaluation result is the same as using ===
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

// Case 2: Signed zero
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true

// Case 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-object.is

Совместимость с браузерами

Настольные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
is
19
12
22
15
9
25
22
14
9
1.5
4.4
9
1.0.0
1.0
0.10.0

Смотрите также

  • Полифилл Object.is в core-js
  • Полифилл es-shims для Object.is
  • Сравнения на равенство и одинаковость

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API