Avoid use of `==` and `!=`JS-0050
It is considered good practice to use the type-safe equality operators === and !== instead of their regular counterparts == and !=.
The strict equality operators (=== and !==) use the strict equality comparison algorithm to compare two operands.
- If the operands are of different types, return
false. - If both operands are objects, return
trueonly if they refer to the same object. - If both operands are
nullor both operands areundefined, returntrue. - If either operand is
NaN, returnfalse. - Otherwise, compare the two operand's values:
- Numbers must have the same numeric values.
+0and-0are considered to be the same value. - Strings must have the same characters in the same order.
- Booleans must be both
trueor bothfalse.
- Numbers must have the same numeric values.
The most notable difference between this operator and the equality (==) operator is that if the operands are of different types, the == operator attempts to convert them to the same type before comparing.
Bad Practice
a == b
foo == true
bananas != 1
value == undefined
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
Recommended
a === b
foo === true
bananas !== 1
value === undefined
typeof foo === 'undefined'
'hello' !== 'world'
0 === 0
true === true
foo === null