GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Home
  • Contact Us
  • About Us
  • PHP
  • HTML
  • JavaScript
  • Git
  • Node.js
  • React.js
  • SQL Server
  • Real Dev Tips to Build Apps and Fix Issues

This view

  • Original page
  • New address

GeezerVison is showing flatcoding.com — JavaScript Comparison Operators: How == and === Work - FlatCoding

Home JavaScript Comparison Operators: How == and === Work
Montasser Mossallem
onJune 15, 2025

JavaScript Comparison Operators: How == and === Work

  • JavaScript
Comparison Operators in JavaScript
3 min read

Table of Content

  • Understand the JavaScript Comparison Operators
  • Loose vs. Strict Comparison in JavaScript
  • Greater, Less, and Equal Checks
  • Edge Cases and Gotchas in JavaScript Comparison Operators
  • Wrapping Up
  • FAQs

You need to compare values in almost every JavaScript program. This is where comparison operators come in. They check if values match or if one is greater than another.

Understand the JavaScript Comparison Operators

Comparison operators check how two values relate. You can check if two values are equal or not equal, or find out which one is bigger. These operators return either true or false.

Each decision in your code—like an if statement, a while loop, or any condition—relies on a comparison. Your code cannot decide what to do without them. They make your logic clear and your code dynamic.

Here are types:

  • Equal (==)
  • Strict Equal (===)
  • Not Equal (!=)
  • Strict Not Equal (!==)
  • Greater Than (>)
  • Less Than (<)
  • Greater Than or Equal To (>=)
  • Less Than or Equal To (<=)

You will see each one below with examples.

Loose vs. Strict Comparison in JavaScript

JavaScript has two types of comparison: loose (==, !=) and strict (===, !==).
Loose comparison converts types before checking values. Strict comparison checks both value and type without conversion.

For example:

'5' == 5   // true
'5' === 5  // false

You may not notice the mistake unless you know how each operator behaves.

Here is another example:

true == 1     // true
true === 1    // false

So, why you should avoid loose equality in JavaScript?

Loose equality can hide bugs. You may compare numbers with strings or booleans. This can make your logic wrong. Stick to === unless you understand the difference.

Loose comparison can convert strings, numbers, booleans, even null or undefined. This can confuse your code.

false == 0     // true
'' == 0        // true
null == false  // false

Type coercion is automatic in loose checks. Use strict checks to avoid errors.

Here is a table that shows you the comparison:

OperatorMeaningType Coercion?
==EqualYes
===EqualNo
!=Not EqualYes
!==Not EqualNo

Greater, Less, and Equal Checks

JavaScript gives you four size-based comparison operators: >, <, >=, and <=. These help you test if a value is bigger or smaller. Or even equal in size.

  • > returns true if the left value is more than the right.
  • < returns true if the left value is less than the right.
  • >= returns true if the left value is more than or equal to the right.
  • <= returns true if the left value is less than or equal to the right.

Here is an example:

10 > 5       // true
'20' < 100   // true (converted to number)
'apple' < 'banana'  // true (alphabetical)

Comparisons work for numbers and strings. String checks follow dictionary order.

Here is another example:

7 >= 7        // true
4 <= 3        // false
'3' <= 3      // true (type conversion)

These checks follow the same coercion rules as > and <.

Edge Cases and Gotchas in JavaScript Comparison Operators

Some comparison results follow specific type conversion rules that can cause unexpected outcomes. You will see examples that do not behave as most people expect.

Why [] == false returns true:

An empty array seems like a value you might treat as false, but the logic behind it is more complex.

Here is what happens:

  1. JavaScript tries to convert the array to a primitive.
  2. [] becomes an empty string "".
  3. "" becomes the number 0.
  4. false also becomes 0 in loose comparison.

So this happens:

[] == false     // true

Now compare them with strict equality:

[] === false    // false

This is false because the types are different: [] is an object, and false is a boolean. Strict comparison checks both value and type, so it fails.

Why null == undefined returns true but null === undefined is false:

JavaScript treats null and undefined as loosely equal. This is a special case. No type conversion happens—they just return true if you use ==.

null == undefined

But in strict comparison, the types must match:

null === undefined    // false

They do not share the same type:

  • null is an object.
  • undefined is its own type.

So strict equality returns false.

Why NaN is not equal to itself:

NaN stands for “Not a Number.” It has a special rule in JavaScript: it never equals anything, not even another NaN.

NaN == NaN     // false
NaN === NaN    // false

This happens because JavaScript uses IEEE 754 rules for numbers. In that system, NaN always means “invalid number” and no invalid number should equal another.

To check if a value is NaN, use:

Number.isNaN(NaN)     // true

This works because Number.isNaN() checks the value without type conversion. Do not use == or === for this case.

Wrapping Up

In this article, you learned how JavaScript comparison operators work and why they matter. You saw the difference between loose and strict checks. You also saw how coercion can affect your logic. Here is a quick recap:

  • Use === and !== instead of == and !=.
  • Type coercion can change how values compare.
  • Combine logical and comparison checks for better rules.
  • Edge cases like [] == false or null == undefined can trick you.

FAQs

What is the difference between == and === in JavaScript?

== checks value with type conversion. === checks value and type. Always prefer === to avoid bugs.

Why is NaN not equal to NaN in JavaScript?

NaN is never equal to anything, even itself. Use Number.isNaN() instead.

Can you compare strings with comparison operators?

Yes. String comparison uses alphabetical order.

Should I avoid using == and != in JavaScript?

Yes. Use strict operators like === and !== unless you need loose checks on purpose.

Why does [] == false return true in JavaScript?

The array becomes '', then 0, then compares to false. Loose comparison allows this kind of coercion.

Similar Reads

JavaScript Hello World: Write a Simple Program in 3 Ways

If you are ready to take your first steps into the realm of web development, then there cannot be a…

JavaScript toSpliced Function Explained with Examples

The toSpliced function creates a new array without changing the original array in JavaScript. It returns a copy with new…

Understanding JavaScript Arithmetic Operators

JavaScript arithmetic operators let you add, subtract, multiply, or divide numbers. You can also use them to find remainders or…

JavaScript math.exp: How to Calculate e^x

Math.exp is a built-in JavaScript function that returns the value of e raised to a given number. Here, e is…

JavaScript switch Statement: Syntax and Examples

JavaScript switch statement checks many values without long chains. It appeared to replace stacked conditions that slow you down. Understand…

How Does JavaScript Work to Run Code in the Web Browser

Click a button on a website. Something changes. A menu opens or a message pops up. That’s how JavaScript works.…

JavaScript Syntax: The Complete Cheat Sheet

JavaScript syntax is what you will use when writing and reading javascript code, it is the foundation of using this…

JavaScript Optional Chaining “?”: How it Works with Examples

JavaScript optional chaining lets you access object values without runtime errors. It checks if a property exists before access and…

How to Use the Ternary Operator in JavaScript

The ternary operator in JavaScript keeps your code short. It helps you write conditions inside one line. JavaScript lets you…

JavaScript Object References and Copying for Beginners

Object References in JavaScript mean that variables do not store full objects but only their references in memory. What is…

  • JavaScript
Montasser Mossallem
onJune 15, 2025
  • JavaScript
Share
Previous Article

PHP htmlspecialchars Function: Prevent XSS in HTML Output

Next Article

String Operators in JavaScript: A Complete Guide to Concatenation

Write a Comment

Leave a Comment Cancel

Your email address will not be published. Required fields are marked *


Recent Posts

  • PHP array_key_exists: How it Works with Examples
  • Git add Command with Step by Step with Example
  • JavaScript valueOf Function: How it Works with Examples
  • Node JS Buffers Tutorial for Beginners and Pros
  • Component-driven HTML Guide with Examples

Recent Comments

No comments to show.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.