Подобно английским омофонам, таким как «to, too, and two», в JavaScript также есть операторы, которые звучат одинаково, но означают совершенно разные вещи. В этом блоге я расскажу о различиях операторов «=», «==» и «===».
Мы начнем с разницы в поведении между «=» и «===». Оператор «=» присваивает значение объявленной переменной, как показано в примерах ниже:
Как видите, «=» используется для присвоения/изменения значения переменной, независимо от того, является ли это значение числом, строкой или объектом, на усмотрение программиста. Теперь перейдем к поведению «===», здесь будет выполнено сравнение, сравнение между двумя значениями переменных, расположенными по обе стороны от оператора. Он спрашивает, эквивалентны ли оба значения друг другу, если да, он вернет true, если нет, он вернет false. Смотрите это в примерах ниже:
Это довольно просто: вы помещаете две переменные с каждой стороны, чтобы определить, имеют ли они одинаковое значение. Как вы, возможно, заметили в последнем примере, он не допустит значений, которые относятся к разным типам данных, если оба значения имеют разные типы данных, это будет ложью. Вот где появляется «==», этот оператор будет делать то, что нам нравится называть преобразованием типа (в основном, это всякий раз, когда он изменяет строку на число), он делает это так, что даже если типы данных разные, он все равно будет быть истинным, пока значения эквивалентны.
Вы можете увидеть это на демонстрациях:
В последнем примере вы увидите, что «num2» — это строковый тип данных, однако, поскольку «==» допускает преобразование типов, строка затем преобразуется в число, которое затем позволяет этому сравнению быть верным. Вот почему «==» считается оператором свободного равенства, а «===» — оператором строгого равенства.
Теперь, когда вы понимаете разницу между этими тремя операторами, вы больше никогда не ошибетесь в них! (или, по крайней мере, с меньшей вероятностью, что случается с лучшими из нас…) А теперь приступайте к кодированию!