Операторы сравнения в js (Javascript)

Операторы сравнения в js (Javascript)

28.01.2024
156
3 мин.
0

Что означают двойные и тройные знаки равенства или операторы сравнения в js (JavaScript)? Если говорить кратко, то свободное равенство (double equals) == по своей сути преобразует тип сущности (type), а строгое равенство (triple equals) === нет.

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

Давайте рассмотрим разницу между ними на основе нескольких примеров, чтобы лучше понять их отличия.

const foo = 'test'
const bar = 'test'  

console.log(foo == bar) // true
console.log(foo === bar) // true  

Значение и тип обоих foo и bar равны. Следовательно, результат будет true для обоих.

const number = 1234 
const stringNumber = '1234'  

console.log(number == stringNumber) // true
console.log(number === stringNumber)  // false  

Значение number и stringNumber в этом выглядит аналогично. Однако типом number является числом (Number), а stringNumber — строка (string). Несмотря на то, что переменные имеют одинаковые значения, они отличаются по типу. Следовательно, проверка посредством оператора == выдаст true, но при проверке значения и типа она вернёт false. Причина этого кроется в одинаковом значении, но разном типе данных.

Стоит отметить следующий интересный факт о том, как функционируют операторы сравнения в js. Если сравнить 0 с false, то они будут равны. Это связано с тем, что значение 0 и false одинаковое в JavaScript, но при проверке ещё и типа результат будет противоположный. Всё просто, 0 является числом, а false имеет тип boolean.

console.log(0 == false) // true
console.log(0 === false) // false   

Сравнение пустой строки и false в JavaScript через == вернёт true. Но при строгом равенстве будет false.

const str = ''

console.log(str == false) // true
console.log(str === false) // false

Читайте также: Как сравнить два массива в JS (JavaScript).

Операторы сравнения в js (Javascript)
Примеры использования операторов строгого и свободного сравнения в Javascript (изображение создано с помощью ИИ)

Когда и какие операторы сравнения в js следует использовать

Если сомневаетесь, как правильно использовать операторы сравнения в js, то делайте выбор в пользу ===. Это избавит от массы потенциальных ошибок.

Когда ситуация позволяет быть немного снисходительным к типу данных, то можно применять ==. Так, если API принимает от клиента оба параметра ‘true’ и true, достаточно воспользоваться ==. В целом, не стоит применять == только в случае отсутствия необходимости сравнения типа данных.

Ниже представлен удобная таблица истинности в JavaScript, которая демонстрирует, насколько сложно определять равенство в этом языке программирования.

Свободное равенство:

Операторы сравнения в js (свободное равенство)
Таблица свободного равенства в JavaScript (Источник: https://dorey.github.io/JavaScript-Equality-Table/)

Строгое равенство:

Операторы сравнения в js (строгое равенство)
Таблица строгого равенства в JavaScript (Источник: https://dorey.github.io/JavaScript-Equality-Table/)

Кроссбраузерность

Как свободное, так и строгое равенство свободно воспринимается всеми браузерами без каких-либо проблем.