Equality
So far, you’ve seen how you can use==
and!=
to compare numbers and strings for equality. However, if you use==
and!=
in situations where the data you’re comparing is mixed, it can lead to some interesting results. For example,
"1" == 1
Returns:true
and
0 == false
Returns:true
JavaScript takes the string"1"
, converts it totrue
, and compares it to the booleantrue
.
"1" == true
Returns:true
When you use the==
or!=
operators, JavaScript first converts each value to the same type (if they’re not already the same type); this is why it's called "type coercion"! This is often not the behavior you want, andit’s actually considered bad practice to use the==
and!=
operators when comparing values for equality.
Strict equality
Instead, in JavaScript it’s better to usestrict equalityto see if numbers, strings, or booleans, etc. are identical in_type_and_value_without doing the type conversion first. To perform a strict comparison, simply add an additional equals sign=
to the end of the==
and!=
operators.
"1" === 1
Returns:false
This returns false because the string"1"
is not the same type_and_value as the number1
.
0 === false
Returns:false
This returns false because the number0
is not the same type_and_value as the booleanfalse
.