What is the only value not equal to itself in JavaScript?

Angelos Chalaris · Dec 12, 2021 ·

JavaScript, Type, Comparison

NaN (Not-a-Number) is the only JavaScript value not equal to itself when comparing with any of the comparison operators. NaN is often the result of meaningless or invalid math computations, so it doesn't make sense for two NaN values to be considered equal.

const x = Math.sqrt(-1); // NaN
const y = 0 / 0;         // NaN

x === y;                 // false
x === NaN;               // false

Number.isNaN(x);         // true
Number.isNaN(y);         // true

isNaN(x);                // true
isNan('hello');          // true

You can check for NaN values using the Number.isNaN() function. Note that this is different from the original , global isNaN(). Their difference lies in the fact that isNaN() forcefully converts its argument to a number, whereas Number.isNaN() doesn't. This is why Number.isNaN() is considered more robust and preferable in most cases.

Recommended snippets & collections

  • JavaScript Comparison

    Snippet collection

    Comparing values in JavaScript is one of the most common tasks, yet it has a lot of things you should bear in mind.

  • equals

    JavaScript, Object

    Performs a deep comparison between two values to determine if they are equivalent.

  • Learn all you need to know about the differences between JavaScript's double equals and triple equals operators.

  • isEmpty

    JavaScript, Type

    Checks if the a value is an empty object/collection, has no enumerable properties or is any type that is not considered a collection.