Javascript - Equal and Not Equal

Introduction

The equal operator is ==, and it returns true if the operands are equal.

The not-equal operator is !=, and it returns true if two operands are not equal.

Both operators do conversions to determine if two operands are equal.

Operand
Result
If an operand is a Boolean value

convert it into a numeric value before checking for equality.
A value of false converts to 0, whereas a value of true converts to 1.
If one operand is a string and the other is a number
attempt to convert the string into a number before checking for equality.
If one of the operands is an object and the other is not


the valueOf() method is called on the object to retrieve a primitive value to compare according to the previous rules.
Values of null and undefined are equal.
Values of null and undefined cannot be converted into any other values for equality checking.
If either operand is NaN


the equal operator returns false and
the not-equal operator returns true.
even if both operands are NaN, the equal operator returns false because NaN is not equal to NaN.
If both operands are objects


they are compared to see if they are the same object.
If both operands point to the same object, then the equal operator returns true.
Otherwise, the two are not equal.

The following table lists some special cases and their results:

ExpressionValue
null == undefined true
"NaN" == NaN false
2 == NaN false
NaN == NaNfalse
NaN != NaNtrue
false == 0 true
true == 1true
true == 2false
undefined == 0false
null == 0 false
"2" == 2 true