The isNaN Function
We can use the isNaN function to check whether a number is NaN .
For instance, we can write:
const nan = isNaN(parseFloat("abc"))
console.log(nan)
isNaN will try to parse the argument we pass into it automatically to a number.
But to be safe, we can parse it ourselves with parseFloat first to make sure we get the expected result.
We parseFloat should return NaN since we passed in a non-numeric string into it.
So isNaN should return NaN .
Therefore, nan is true .
Check Whether a Value Equals Itself
Since NaN is the only value in JavaScript which doesn’t equal itself, we can check whether a variable equals itself to check if the variable’s value is NaN .
For instance, we can write:
const nan = NaN
console.log(nan !== nan)
Then the console log will show true since NaN doesn’t equal itself.
If nan has any other value, the console log would log false .
So if we have:
const nan = true
console.log(nan !== nan)
Then the console log would show false .
The Number.isNaN Method
The Number.isNaN method is another method that lets us check whether a value we pass into it is NaN .
The difference between isNaN and Number.isNaN is that Number.isNaN doesn’t try to convert a value to a number before it’s checked.
For instance, we can write:
const nan = Number.isNaN('abc');
console.log(nan)
Then console log shows false since we didn’t pass in NaN .
We just passed in something that’s not a number.
But if we write:
const nan = Number.isNaN(NaN);
console.log(nan)
Then nan is true .
Object.is
Another method we can use to check for NaN is the Object.is method.
Object.is takes 2 arguments with the values that we want to compare.
If both values are NaN , then it returns true instead of false like we have with === .
For instance, we can write:
const a = NaN
const nan = Object.is(a, NaN);
console.log(nan)
Then nan is true according to the console log.
Conclusion
We can check for NaN with various functions and methods provided by JavaScript.
Also, we can use the === operator to check if a value doesn’t equal itself.
If it doesn’t, then we know the value must be NaN since NaN is the only value that doesn’t equal itself in JavaScript.