Why is this an issue?
The ==
and !=
operators do type coercion before comparing values. This is bad because it can mask type errors. For
example, it evaluates ' \t\r\n' == 0
as true
.
It is best to always use the side-effect-less ===
and !==
operators instead.
Noncompliant code example
if (var == 'howdy') {...} // Noncompliant
Compliant solution
if (var === 'howdy') {...}
Exceptions
Even if testing the equality of a variable against null doesn’t do exactly what most JavaScript developers believe, usage of ==
or
!=
is tolerated in such context. In the following case, if foo
hasn’t been initialized, its default value is not
null
but undefined
. Nevertheless undefined == null
, so JavaScript developers get the expected behavior.
if(foo == null) {...}