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 с одинаковым числовым значением
- оба символа, которые ссылаются на одно и то же символьное значение
- оба числа и
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
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
Смотрите также
© 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