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
Writableno
Enumerableno
Configurableno

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

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

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-number.nan

Browser compatibility

See also