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

Операторы сравнения помогают нам определить, равны ли две переменные или соответствуют заданному критерию. Если результаты сравнения благоприятные, возвращается true
; в противном случае возвращается false
. В этом руководстве объясняется самая запутанная тема среди операторов сравнения и учит, когда использовать оператор равенства (==
или ===
).
Одиночное равно =
сильно отличается от двойного равно ==
и тройного равно ===
, потому что это операция присваивания, и они являются операторами сравнения. Поэтому обычно путают ==
и ===
.
Свободный оператор равенства (==
) в JavaScript
Оператор ==
или оператор равенства также называют оператором абстрактного сравнения. Он называется абстрактным, потому что он касается только значения, а не типа переменной. Оператор ==
выполняет преобразование значений переменных в один и тот же тип (приведение типов) перед их сравнением друг с другом и возвращает истину, если преобразованные операнды равны. Поскольку оператор должен выполнять преобразование типов, он обычно немного медленнее, чем оператор ===
.
Теперь, чтобы понять, когда какой оператор использовать, нам сначала нужно немного понять, что такое приведение типов. Он бывает двух видов:
- Явное принуждение: это делается явно через код с использованием встроенных методов. Например: чтобы преобразовать строку
"42"
в число, нужно написатьЧисло (
42)
. Таким образом, мы используем явный метод преобразования типаNumber()
для преобразования строки в число. - Неявное принуждение: это осуществляется языком неявно. Обычно это происходит, когда мы используем два разных типа операнда с оператором. Например: Если мы выполняем
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
Следовательно, решение о выборе оператора ==
или ===
связано с необходимостью приведения типов. Если кто-то не знаком с приведением типов, ему следует придерживаться оператора строгого равенства.