Chalarangelo/30-seconds-of-code

View on GitHub
content/snippets/js/s/value-not-equal-to-itself.md

Summary

Maintainability
Test Coverage
---
title: What is the only value not equal to itself in JavaScript?
shortTitle: The only value not equal to itself
type: question
language: javascript
tags: [type,comparison]
cover: eagle
excerpt: Did you know there's a JavaScript value that's not equal to itself?
listed: true
dateModified: 2021-12-12
---

`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.

```js
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.