NaN and implicit type conversion

To quote from Dmitry Soshnikov's Note 2. ECMAScript. Equality operators, if one of the operands in a non-strict comparison is a number, the second operand will always be converted to a number.

In this case, typeof NaN === 'number', so true and false are coerced to 0 and 1 before the comparison. Neither is equal to NaN. This pitfall is avoided entirely with strict equality (===) comparisons.