JavaScript метод Object.is()
Определение и применение
JavaScript метод is() возвращает логическое значение, которое определяет являются ли два переданных
значения одинаковыми. Если значения являются одинаковыми, то возвращаемое значение будет true, в
противном случае false.
Переданные значения являются одинаковыми в следующих случаях:
- оба значения равны
undefined. - оба значения равны
null. - оба значения равны
true, либо оба значения равныfalse. - оба значения являются строками с одинаковой длиной и одинаковыми символами.
- оба значения являются одним и тем же объектом.
- оба значения являются числами и имеют одинаковое значение.
- оба значения являются числами и равны +0, или оба значения являются числами и равны -0.
- оба значения равны
NaN
Обращаю Ваше внимание, что метод is() не аналогичен использованию оператора ==. В отличие от метода
is() оператор == перед проверкой на равенство использует приведение типов обоих операндов (если они имеют
различный тип).
Например:
"" == false; // возвращаемое значение true
Object.is( "", false ); // возвращаемое значение false
Кроме того, метод is() не аналогичен использованию оператора ===. Например, оператор ===, как и оператор
== считает числовые значения -0 и +0 равными, а значение NaN не равным самому себе:
-0 == +0; // возвращаемое значение true
-0 === +0; // возвращаемое значение true
Object.is( -0, +0 ); // возвращаемое значение false
NaN == NaN; // возвращаемое значение false
NaN === NaN; // возвращаемое значение false
Object.is( NaN, NaN ); // возвращаемое значение true
Это сравнение SameValue, а не глубокое сравнение: объекты равны только при совпадении ссылок, символы —
при совпадении самого символа. Object.is(NaN, NaN) возвращает true, а
Object.is(+0, -0) — false.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
is | 19 | 12 | 22 | 15 | 9 | 25 | 22 | 14 | 9 | 1.5 | 4.4 | 9 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
// сравнение двух значений
Object.is( value1, value2 );
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
value1 |
Первое сравниваемое значение для проверки. Обязательное значение. |
value2 |
Второе сравниваемое значение для проверки. Обязательное значение. |
Два значения BigInt равны при одинаковом целом значении; 1n и 1 различаются.
Два символа равны, только если это один и тот же Symbol.
Примеры, попробуйте сами
В примере «Ссылки, NaN и знаковый ноль» показан результат вызова метода.
Ссылки, NaN и знаковый ноль
Измените свойства исходного объекта и сравните результат до и после вызова метода.
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Ссылки, NaN и знаковый ноль</title>
</head>
<body>
<p>Результат выполнения выводится в консоль.</p>
</body>
</html>
main.js
let obj = { a: 1 }, // инициализируем переменную содержащую объект
a = obj,
b = obj
console.log(Object.is(a, b)) // возвращаемое значение true
console.log(Object.is(undefined, undefined)) // возвращаемое значение true
console.log(Object.is(null, null)) // возвращаемое значение true
console.log(Object.is(true, true)) // возвращаемое значение true
console.log(Object.is('hello world', 'hello world')) // возвращаемое значение true
console.log(Object.is(777, 777)) // возвращаемое значение true
console.log(Object.is(+0, +0)) // возвращаемое значение true
console.log(Object.is(NaN, NaN)) // возвращаемое значение true
console.log(Object.is(NaN, 0 / 0)) // возвращаемое значение true
console.log(Object.is([], [])) // возвращаемое значение false
console.log(Object.is({}, {})) // возвращаемое значение false
console.log(Object.is('a', 'A')) // возвращаемое значение false
console.log(Object.is(true, false)) // возвращаемое значение false
console.log(Object.is(-0, +0)) // возвращаемое значение false