W3cubDocs

/JavaScript

Number.NaN

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨July 2015⁩.

The Number.NaN static data property represents Not-A-Number, which is equivalent to NaN. For more information about the behaviors of NaN, see the description for the global property.

Try it

function clean(x) {
  if (x === Number.NaN) {
    // Can never be true
    return null;
  }
  if (isNaN(x)) {
    return 0;
  }
}

console.log(clean(Number.NaN));
// Expected output: 0

Value

The number value NaN.

Property attributes of Number.NaN
Writable no
Enumerable no
Configurable no

Description

Because NaN is a static property of Number, you always use it as Number.NaN, rather than as a property of a number value.

Examples

>

Checking whether values are numeric

function sanitize(x) {
  if (isNaN(x)) {
    return Number.NaN;
  }
  return x;
}

Specifications

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
NaN 1 12 1 3 1 18 4 10.1 1 1.0 4.4 1 1.0.0 1.0 0.10.0

See also

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN