As a rule of thumb, I would generally use === instead of == (and !== instead of !=).
Reasons are explained in in the answers above and also Douglas Crockford is pretty clear about it (JavaScript: The Good Parts).
However there is one single exception: == null is an efficient way to check for 'is null or undefined':
if( value == null ){ // value is either null or undefined } For example jQuery 1.9.1 uses this pattern 43 times, and the JSHint syntax checker even provides the eqnull relaxing option for this reason.
From the jQuery style guide:
Strict equality checks (===) should be used in favor of ==. The only exception is when checking for undefined and null by way of null.
// Check for both undefined and null values, for some important reason. undefOrNull == null; EDIT 2021-03:
Nowadays most browsers support the Nullish coalescing operator (??) and the Logical nullish assignment (??=), which allows a more concise way to assign a default value if a variable is null or undefined, for example:
if (a.speed == null) { // Set default if null or undefined a.speed = 42; } can be written as any of these forms
a.speed ??= 42; a.speed ?? a.speed = 42; a.speed = a.speed ?? 42;