Я уверен, что вы, должно быть, воскликнули, когда впервые увидели «===» вместо «==» где-то при сравнении двух значений в JS, ну, я тоже. Сегодня я расскажу вам, в чем причина этого.

В JS мы можем сравнивать два значения, используя как «===», так и «==». Но в чем разница? На самом деле, когда мы используем «==», значение приводится к типу перед сравнением, а значения «===» сравниваются как есть.

Приведение типа в основном относится к автоматическому или неявному преобразованию значения из одного типа в другой. Это делается компилятором самостоятельно.
Например:

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

=== не выполняет приведение типов, а просто сравнивает типы и значения и дает false, если какой-либо из них не совпадает. Следовательно, это называется строгим равенством.

Вам должно быть интересно, что происходит при сравнении объектов и массивов. Объекты и массивы в Javascript сравниваются по-разному. Давайте разберемся на примере:

При сравнении двух объектов Javascript проверяет, указывают ли они на один и тот же объект или нет, т.е. имеют ли они одинаковую ссылку. Итак, x!==y, потому что они указывают на два разных объекта или области памяти, тогда как x=== z истинно, потому что они указывают на один и тот же объект. Этот тип равенства называется ссылочное равенство. Однако, если мы хотим сравнить содержимое двух объектов, имеют ли они одинаковые значения или нет, т.е. структурное равенство, в Javascript нет встроенного способа сделать это. Приходится что-то придумывать самостоятельно или использовать сторонние обходные пути для проверки структурного равенства объектов.

Это было все о равенстве в Javascript. Надеюсь, вы найдете этот блог полезным.

Спасибо, что прочитали.