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()использует оператор строгого равенстваили ===.