Understanding == vs === in JavaScript

Pooja Mishra
3 min readJul 16, 2024

JavaScript, being a versatile and flexible language, offers multiple ways to compare values. One of the most common points of confusion for beginners and even some seasoned developers is the difference between == and ===. In this blog post, we will explore these two comparison operators, understand their differences, and learn when to use each.

The Basics

  • == (Equality Operator): This operator is used to compare two values for equality, but it performs type coercion if the values are of different types.
  • === (Strict Equality Operator): This operator compares two values for equality without performing type coercion. The values must be of the same type to be considered equal.

Type Coercion

Type coercion is the process where JavaScript automatically converts one type to another to make the comparison possible. While this can be convenient, it can also lead to unexpected results.

Examples

Let’s look at some examples to see the difference between == and ===.

Using == (Equality Operator):

console.log(1 == '1'); // true
console.log(true == 1); // true
console.log(null == undefined); // true
console.log(' ' == 0); // true
console.log([1,2] == '1,2'); // true

In each of these cases, JavaScript performs type coercion to compare the values. This can lead to some surprising results, especially if you’re not expecting the types to be converted.

Using === (Strict Equality Operator):

console.log(1 === '1'); // false
console.log(true === 1); // false
console.log(null === undefined); // false
console.log(' ' === 0); // false
console.log([1,2] === '1,2'); // false

With ===, no type coercion occurs. The values must be of the same type and value to be considered equal.

Why Prefer === Over ==?

Using === is generally considered a best practice in JavaScript for several reasons:

  1. Predictability: Since === does not perform type coercion, it provides more predictable and understandable results. Developers can be certain that no implicit conversions are taking place.
  2. Debugging: When type coercion occurs with ==, it can make debugging more difficult because you might not immediately realize that a type conversion is happening behind the scenes.
  3. Code Clarity: Using === can make the intent of the code clearer to other developers (and to yourself when you come back to it later). It explicitly shows that you are expecting the values to be of the same type.

When to Use ==?

There are rare cases where == can be useful, particularly when you specifically want to allow type coercion. One common example is comparing with null and undefined.

function isNullOrUndefined(value) {
return value == null;
}
console.log(isNullOrUndefined(null)); // true
console.log(isNullOrUndefined(undefined)); // true
console.log(isNullOrUndefined('')); // false
console.log(isNullOrUndefined(0)); // false

In this function, value == null checks if value is either null or undefined, leveraging the type coercion behavior of ==.

Conclusion

Understanding the differences between == and === is crucial for writing reliable and predictable JavaScript code. While == can sometimes be useful, === is generally the safer and more predictable choice. By using ===, you can avoid unexpected type coercion and make your code easier to read and debug.

Always remember, clear and predictable code is better than clever but obscure code. Happy coding!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Pooja Mishra
Pooja Mishra

Written by Pooja Mishra

🌱 Educator 💻 Programmer 🌐 Full Stack Developer 🔥 Motivator 📘 Content creator 🧨 AI 🔥 Machine Learning 👋 ReactJS 🐍 Python ⬆️ Node JS 📈 Entrepreneurship

No responses yet

Write a response