оператор тройного равенства===Строго проверьте, чтобы 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, прочитайте последние статьи в первый раз и отдайте приоритет публикации новых статей через два дня. Обратив внимание, ответьте, пожалуйста, личным письмом: Большая подарочная упаковка, отправка по сети качественных видеокурсов онлайн с информацией о дисках, безусловно, сэкономит вам много денег!