JavaScript предоставляет 3 различных оператора сравнения.
- == оператор
- === оператор
- Object.is()
== или абстрактный оператор равенства
Двойное равенство или оператор свободного равенства, который проверяет, равны ли только значения, а затем возвращает значение true. В этом случае, если тип выражений отличается, выражения конвертируются в один общий тип с помощью неявного приведения типов.
Шпаргалка для вас при использовании оператора ==
- NaN не равен ничему, включая самого себя
- -0 равно 0
- null равно и null, и undefined.
- Выражения преобразуются в строку, логическое значение или число.
- Сравнение строк чувствительно к регистру
- Если два операнда относятся к одному и тому же объекту, то он оценивается как истина, в противном случае — ложь.
- Всегда помните 6 ложных значений (null, undefined, '',0, NaN и false)
=== или оператор строгого равенства
Операция тройного равенстваили Операция идентификации очень похожа на Операцию двойного равенства, за исключением того, что она не выполняет неявного приведения типов. Этот оператор возвращает true, если и значение, и тип левого и правого выражений равны.
Памятка для вас при использовании оператора ===
- -0равно 0
- null равно только null
- Сравнение строк чувствительно к регистру
- NaN не равен ничему, включая самого себя
- Если два операнда относятся к одному и тому же объекту, то он оценивается как истина, в противном случае он возвращает ложь.
Объект.is()
Оператор равенства одинаковых значений — новейшее дополнение к операторам сравнения (доступно с ES2015). Он проверяет, совпадают ли два значения, используя следующие правила.
Правило 1. Оба значения не определены.
Правило 2.Оба значения представляют собой строки одинаковой длины с одинаковыми символами в одинаковом порядке.
Правило 3.Оба значения равны нулю.
Правило 4.Оба значения являются объектами, имеющими одну и ту же ссылку.
Правило 5.Оба значения являются одним и тем же ненулевым и не-NaN числом.
Правило 6.Оба значения либо +0, либо -0.
Правило 7:оба NaN.
Array.prototype.indexOf()использует оператор строгого равенстваили ===.