JavaScript introduces two new operators, the **strict equality operators**.

The strict equality operators (=== and !==) perform equality comparisons on operands of the same type. No type conversion is performed before the comparison. They should be both Integer, String, or any other JavaScript type:

operand1 === operand2

operand1 !== operand2

Use the strict equality operator (===) when you want to check that the two operands are of the same type and value. Use the regular equality operator (==) if you care only about the value and the type does not matter. If, for example, one operand is the number 5 and the other operand is the string “5”, standard equality operator will return true, but, since they are not of the same type, a strict equality operator will return false.

Comparing two operands may be tricky at times. Comparing numbers is probably the most straightforward. Numbers are equal when they are numerically equal, or to put it differently, the difference between them is zero. Strings are compared according to a standard lexicographical ordering, using Unicode values. Therefore, two strings are equal when they have the same length, same sequence of characters, exactly in the same corresponding positions. The number `NaN`

(see our previous column) is not equal to anything, including itself. Positive and negative zeros are equal.

Two objects are equal if they refer to the exact same `Object`

. In the assembly line example from our previous page, we use the following line to construct the `volvoInterior`

object:

volvoInterior = new interior(“blue”, “leather”, true);

If we duplicate this line to construct two seemingly-identical objects, `volvoInterior1`

and `volvoInterior2`

:

volvoInterior1 = new interior(“blue”, “leather”, true);

`volvoInterior2 = new interior("blue", "leather", true);`

a strict equality operator:

`if (volvoInterior1 === volvoInterior2)`

will yield `false`

. Only when objects are identical, will the strict equality operator return `true`

:

if (volvoInterior1 === volvoInterior1)

But this behavior of object comparison is valid for standard equality operator as well. The comparison:

if (volvoInterior1 == volvoInterior2)

returns `false`

, while the following operation:

if (volvoInterior1 == volvoInterior1)

returns `true`

.

Comparing a string with a number highlights the difference between strict equality and standard equality operators.

if (5 === “5”)

returns `false`

, while the following test:

if (5 == “5”)

returns `true`

.

Boolean operands are equal if they are both `true`

or `false`

.