# JS Tip of the Day: What is a NaN?

What is a NaN?
Level: Beginner

In JavaScript `NaN` stands for Not a Number. Its a primitive value that is used to represent a non-number value within the number type. So in reality, `NaN` is both a number, and not.

The value `NaN` is accessible both as a global and as a property of `Number`.

``````console.log(NaN); // NaN
console.log(Number.NaN); // NaN
console.log(typeof NaN); // number
``````

Any time you perform a numeric operation that can’t resolve into a number, you’ll get `NaN` as a result.

``````console.log(1 * 'x'); // NaN
console.log(0/0); // NaN
console.log(Math.sqrt(-1)); // NaN
``````

If you try to convert a value that can’t be turned into a number, you’ll also get a `NaN` value in return.

``````console.log(Number('x')); // NaN
console.log(+{}); // NaN
``````

The value `NaN` has a peculiar behavior where its not equal to itself.

``````console.log(NaN === NaN); // false
``````

To see if something is `NaN`, instead of comparing it to `NaN`, you can use an `isNaN()` function. There are also two of these, one global and one in `Number`, though they work slightly differently. The global `isNaN()` will first try to convert a value to a number and then see if the result is `NaN` whereas `Number.isNaN()` will check specifically to see if the value its given is the value `NaN`.

``````console.log(isNaN(NaN)); // true
console.log(isNaN('1')); // false
console.log(isNaN('x')); // true

console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN('1')); // false
console.log(Number.isNaN('x')); // false
``````