Mekimemo / What Is the Triple Equal Operator in Javascript?

Created Thu, 27 Mar 2025 12:39:42 +0800 Modified Sun, 27 Apr 2025 13:42:17 +0000

Understanding the difference between JavaScript’s == (loose equality) and === (strict equality) operators is crucial for writing reliable and predictable code. These operators are used to compare values, but they behave differently when it comes to type conversion.

Loose Equality (==)

The == operator compares two values for equality, performing type conversion if necessary. This means that if the values are of different types, JavaScript will attempt to convert them to a common type before making the comparison. While this can be convenient, it may lead to unexpected results due to implicit type coercion.

Example 1: Comparing a number and a string

let a = 5;
let b = '5';

console.log(a == b); // Output: true

In this case, JavaScript converts the string '5' to the number 5 before making the comparison, resulting in true.

Example 2: Comparing a boolean and a number

let x = 0;
let y = false;

console.log(x == y); // Output: true

Here, false is coerced to 0, so the comparison evaluates to true.

Example 3: Comparing null and undefined

console.log(null == undefined); // Output: true

JavaScript considers null and undefined equal when using ==, even though they are different types.

Strict Equality (===)

The === operator compares both the value and the type of the operands without performing any type conversion. For the comparison to return true, both the value and the type must be the same.

Example 1: Comparing a number and a string

let a = 5;
let b = '5';

console.log(a === b); // Output: false

Since a is a number and b is a string, the comparison returns false because their types differ.

Example 2: Comparing two identical strings

let str1 = 'hello';
let str2 = 'hello';

console.log(str1 === str2); // Output: true

Both the value and type match, so the comparison returns true.

Example 3: Comparing null and undefined

console.log(null === undefined); // Output: false

With ===, null and undefined are not considered equal because they are of different types.

Key Differences

  • Type Conversion: == performs type conversion to match the types before comparison, which can lead to unexpected results. === does not perform type conversion; both the value and type must match for the comparison to return true.

  • Predictability: Using === is generally more predictable and less error-prone because it doesn’t involve implicit type coercion.

Best Practices

It’s advisable to use === (strict equality) over == (loose equality) to avoid unexpected type coercion issues. This practice leads to more reliable and maintainable code.

For more detailed information on equality comparisons in JavaScript, you can refer to the MDN Web Docs.