В JavaScript вы можете использовать два разных оператора для проверки равенства объектов. Они ==
и ===
.
По сути, они делают одно и то же, но между ними есть большая разница.
===
проверит равенство двух значений. Если они являются объектами, то объекты должны быть одного типа. JavaScript, как вы знаете, не типизирован, но у вас есть некоторые фундаментальные типы, о которых вы должны знать.
В частности, у нас есть типы значений (логические, нулевые, неопределенные, строковые и числовые) и ссылочные типы (Массив, объект, функция).
Если два значения не одного типа, ===
вернет значение false.
Если они одного типа, JavaScript проверит их на равенство.
С ссылочными типами , это означает, что значения должны ссылаться на тот же объект/массив/функцию. Не один с одинаковыми ценностями: один и тот же.
==
отличается тем, что он попытается преобразовать типы для соответствия.
Вот почему вы получаете такие результаты, как
false == '0' //true false === '0' //false null == undefined //true null === undefined //false
По моему опыту, в 97% случаев вы захотите использовать ===
, если только ==
не предоставляет именно то, что вы хотите. У него меньше недостатков и крайних случаев.
То же самое относится и к !=
и != =
, которые выполняют то же самое, но отрицаются.
Всегда по умолчанию используется значение != =
.
Оригинал: “https://flaviocopes.com/javascript-comparison-operator-difference/”