JavaScript === против ==

  1. Свободный оператор равенства (==) в JavaScript
  2. Оператор строгого равенства (===) в JavaScript

Операторы сравнения помогают нам определить, равны ли две переменные или соответствуют заданному критерию. Если результаты сравнения благоприятные, возвращается true; в противном случае возвращается false. В этом руководстве объясняется самая запутанная тема среди операторов сравнения и учит, когда использовать оператор равенства (== или ===).

Одиночное равно = сильно отличается от двойного равно == и тройного равно ===, потому что это операция присваивания, и они являются операторами сравнения. Поэтому обычно путают == и ===.

Свободный оператор равенства (==) в JavaScript

Оператор == или оператор равенства также называют оператором абстрактного сравнения. Он называется абстрактным, потому что он касается только значения, а не типа переменной. Оператор == выполняет преобразование значений переменных в один и тот же тип (приведение типов) перед их сравнением друг с другом и возвращает истину, если преобразованные операнды равны. Поскольку оператор должен выполнять преобразование типов, он обычно немного медленнее, чем оператор ===.

Теперь, чтобы понять, когда какой оператор использовать, нам сначала нужно немного понять, что такое приведение типов. Он бывает двух видов:

  1. Явное принуждение: это делается явно через код с использованием встроенных методов. Например: чтобы преобразовать строку "42" в число, нужно написать Число ( 42 ). Таким образом, мы используем явный метод преобразования типа Number() для преобразования строки в число.
  2. Неявное принуждение: это осуществляется языком неявно. Обычно это происходит, когда мы используем два разных типа операнда с оператором. Например: Если мы выполняем 1 + "". Есть одно число и одна строка, которые нельзя добавить напрямую, поэтому тип JavaScript преобразует число в строку, поскольку это единственный способ их добавления и возвращает строку "1".
23 == "23" // returns true
true  + false == 1  // returns true
undefined == null // returns true
[] == 0 // returns true

Оператор строгого равенства (===) в JavaScript

Оператор === или оператор идентичности также называют оператором строгого сравнения. Он называется строгим, потому что он возвращает истину только в том случае, если тип и значение обоих операндов одинаковы. Он не выполняет никаких преобразований; следовательно, он обычно быстрее, чем оператор ==.

true === true // returns true
true === 1    // returns false

Следовательно, решение о выборе оператора == или === связано с необходимостью приведения типов. Если кто-то не знаком с приведением типов, ему следует придерживаться оператора строгого равенства.

Сопутствующая статья - JavaScript Operator

  • Тернарный условный оператор JavaScript