Метод
Object.is()
з'ясовує, чи мають два аргументи однакове значення.Синтаксис
Object.is(value1, value2);
Параметри
value1
- Перше значення для порівняння.
value2
- Друге значення для порівняння.
Вертає
Булеве значення
, що вказує, чи мають вказані аргументи однакове значення.
Опис
Object.is()
визначає, чи мають вказані аргументи однакове значення. Два значення вважаються однаковими за однієї з наступних умов:
- обидва
undefined
; - обидва
null
; - обидва
true
або обидваfalse
; - обидва є рядками однакової довжини з однаковими символами у однаковому порядку;
- обидва є тим самим об'єктом (тобто, обидва мають те саме посилання);
- обидва є числами та
Це не те саме, що й рівність відповідно до оператора ==
. Оператор ==
здійснює приведення типів обох операндів (якщо вони належать до різних типів даних) перед перевіркою на рівність (в результаті такий вираз як "" == false
має значення true
), натомість, метод Object.is
не перетворює жодне значення.
Це також не те саме, що й рівність відповідно до оператора ===
. Оператор ===
(так само, як оператор ==
) вважає рівними числові значення -0
та +0
, а значення Number.NaN
не вважає рівним до NaN
.
Приклади
Object.is('foo', 'foo'); // true
Object.is(window, window); // true
Object.is('foo', 'bar'); // false
Object.is([], []); // false
var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(null, null); // true
// Особливі Випадки
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true
Запасний варіант (поліфіл)
if (!Object.is) {
Object.is = function(x, y) {
// Алгоритм SameValue
if (x === y) { // Steps 1-5, 7-10
// Кроки 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Крок 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.is' in that specification. |
Standard | Первинне визначення. |
ECMAScript (ECMA-262) The definition of 'Object.is' in that specification. |
Living Standard |
Підтримка веб-переглядачами
BCD tables only load in the browser
Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію https://github.com/mdn/browser-compat-data.
Див. також
- Перевірка на рівність та однаковість — порівняння усіх трьох вбудованих мірил однаковості