Краткое описание оператора Object.is() и "===" в JavaScript

JavaScript
Краткое описание оператора Object.is() и "===" в JavaScript

оператор тройного равенства===Строго проверьте, чтобы 2 значения были одинаковыми:

1 === 1;    // => true
1 === '1';  // => false
1 === true; // => false

Однако спецификация ES2015 представилаObject.is(), который ведет себя почти так же, как оператор строгого равенства:

Object.is(1, 1);    // => true
Object.is(1, '1');  // => false
Object.is(1, true); // => false

Главный вопрос: когда использоватьObject.is()Вместо строгих проверок на равенство? Давайте узнаем.

1. Оператор строгой проверки на равенство

Во-первых, давайте быстро рассмотрим, как работает оператор строгого равенства.

Когда два значения имеют один и тот же тип и содержат одно и то же значение, оператор строгой проверки на равенство оценивается какtrue.

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

1         === 1;         // => true
'abc'     === 'abc';     // => true
true      === true;      // => true
null      === null;      // => true
undefined === undefined; // => true

Операторы строгого равенства не выполняют приведение типов, и даже если операторы содержат одно и то же значение, но операторы разных типов, они не являются строго равными:

1    === '1';       // => false
1    === true;      // => false
null === undefined; // => false

Когда для объекта выполняется строгая проверка на равенство, объект строго равен только самому себе:

const myObject = { prop: 'Value' };
myObject === myObject;  // => true

Несмотря на то, что свойства и значения 2-х объектов совершенно одинаковы, их значения различны:

const myObject1 = { prop: 'Value' };
const myObject2 = { prop: 'Value' };
myObject1 === myObject2; // => false

Приведенная выше схема сравнения находится вObject.is(valueA,valueB)работает точно так же, как в .

контрольная сумма строгого равенстваObject.is()Разница в том, как бороться сNaNи как обрабатывать отрицательные нули-0.

первый,NaN(нечисловое) не является строго равным какому-либо другому значению, даже с использованием другогоNaN:

NaN === NaN; // => false
NaN === 1;   // => false

Во-вторых, оператор строгого равенства не может-0а также+0дифференцировать:

-0 === +0; // => true

Оператор строгого равенства использует алгоритм сравнения строгого равенства.woooooooooooooo.EC-Code-international.org/EC-Code-262/7. …

2. Object.is()

Object.is(valueA,valueB)Аргументы, которые проверяются на равенство так же, как оператор строгого равенства, с двумя отличиями.

первый,NaNравный другомуNaNстоимость:

Object.is(NaN, NaN); // => true
Object.is(NaN, 1);   // => false

Второй,Object.is()различать-0а также+0:

Object.is(-0, +0); // => false

По сравнению с оператором строгого равенства,Object.is()Используйте тот же алгоритм сравнения значений.woooooooooooooo.EC-Code-international.org/EC-Code-262/7. …

Суммировать

В большинстве случаев оператор строгого равенства является хорошим способом сравнения значений.

Если вы хотите проверить напрямуюNaNзначение или более строгое различие между отрицательными и положительными нулями, тоObject.is()хороший выбор.

Object.is()Также полезен как функциональный метод сравнения значений, например, в функциональном программировании.


источник:dmitripavlutin.com, Автор: Дмитрий Павлютин, Перевод: Официальный аккаунт "Front-End Full-Stack Developer"

Эта статья была впервые опубликована в публичном аккаунте"Fullstack-разработчик фронтенда"ID: by-zhangbing-dev, прочитайте последние статьи в первый раз и отдайте приоритет публикации новых статей через два дня. Обратив внимание, ответьте, пожалуйста, личным письмом: Большая подарочная упаковка, отправка по сети качественных видеокурсов онлайн с информацией о дисках, безусловно, сэкономит вам много денег!