Today, we'll talk about the Javascript method Number.isNaN and the global Javascript function isNaN().
Number.isNaN() and isNaN()
Both Number.isNaN() and isNaN() return a boolean, depending on the value that has been passed.
console.log(isNaN(5)); // false
console.log(Number.isNaN(5)); //false
isNaN()
Determines whether or not a value is NaN (not a number) and returns a boolean (true or false).
console.log(isNaN(8)); // prints false, as 8 is a number
console.log(isNaN('100F')); // prints true, 100F is not a number
isNaN() however, behaves strangely when passed non-numeric arguments at times, and it is considered unreliable compared to Number.isNaN().
This is because isNaN() tries to convert any non-numeric argument passed into it to a Number, and tests the resulting value of that instead.
// these equate to true, despite them clearly not being numbers
console.log(isNaN('NaN'));
console.log(isNaN(undefined));
console.log(isNaN({}));
console.log(isNaN('blah'));
Number.isNaN()
Number.isNaN() determines whether a value passed is NaN (Not a Number), using the type Number.
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(6)); // false
Generally, we prefer to use Number.isNaN() as a default, as it is more robust than isNaN, its original.
Below is a look at the function typeOfNaN(value), which takes in a value and uses if statements to determine which type of NaN was passed into it, we use console.log afterwards to print out which type of NaN was detected.
function typeOfNaN(value) { // tests which type of Not a Number was passed in as 'value'
if (Number.isNaN(value)) { // if this is true
return value + ' is not a number evaluated with Number.isNaN()';
}
if (isNaN(value)) { // tests if this is true
return value + ' is not a number evaluated with isNaN()';
}
}
console.log(typeOfNaN('100F'));
// output: "100F is not a number evaluated with isNaN()"
console.log(typeOfNaN(NaN));
// output: "NaN is not a number evaluated with Number.isNaN()"
We can also check if this value is false i.e. a Number, simply by using == false.
if(Number.isNaN(5)==false) {
console.log('This is a number!');
}
Top comments (0)