В этом руководстве вы узнаете разницу между строгими ===
и свободными ==
операторами равенства в JavaScript и поймете, как они сравнивают операнды.
В JavaScript мы используем тройное равенство ===
известное как strict equality
или двойное равное ==
известное как loose equality
для сравнения двух или более операндов, они выглядят одинаково, но они разные.
Строгое равенство (===)
При сравнении двух операндов тройное равно===
возвращает true
только в том случае, еслиоба значения и типы идентичны для двух сравниваемых операндов. Например, 20 === "20"
, здесь мы сравниваем число 20
со строкой "20"
, строгое равенство возвращает false
, потому что их типы — это разные строки и числа.
В отличие от приведенного выше примера, давайте сравним 20
с 20
, снова используя тройное равенство. На этот раз мы сравниваем число с другим. Таким образом, оператор тройного равенства возвращает true
, потому что оба операнда имеют одинаковое значение и тип. Другие примеры перечислены ниже👇 👇 👇
Свободное равенство (==)
При использовании двойного равенства в JavaScript выполняется type coercion
. Приведение типов означает, что два значения сравниваются только после попытки приведения их к общему типу.
Давайте используем свободное равенство для сравнения числа и строки. Допустим, 20
— это значение нашего числа, а строковое значение — "20"
. В этом случае, обо всем по порядку, JavaScript попытается преобразовать наши значения в общий тип. Строковое значение "20"
можно легко преобразовать в числовое значение 20
. Так как 20
equals 20
, оператор двойного равенства возвращает true. Найдите больше примеров ниже👇 👇 👇
Ложные значения с нечетким равенством
В Javascript есть только шесть ложных значений: false boolean
, ноль 0
, пустая строка ""
, null
, undefined
и NaN
(не число).
- При сравнении любого из следующих значений
falsy
:false
,0
иempty string “”
с нечетким равенством они всегда будут равны! Это потому, что все эти значения будут преобразованы вfalse boolean
.
2. При сравнении null
и undefined
они равны только себе и друг другу. Напомним, что при попытке сравнить null
с любым другим значением будет возвращено false
3. NaN
не эквивалентно никакому значению, даже самому себе, оно всегда будет возвращать false
при использовании свободного равенства.
Советы:
Если вам абсолютно не нужно использовать свободное равенство, в противном случае всегда лучше использовать строгое равенство.
Это все для поста, я надеюсь, вам было интересно его читать.