parseFloat("NaN")
returns "NaN", but
parseFloat("NaN") == "NaN"
returns false. Now, that's probably a good thing that it does return false, but I don't understand how this is so. Did the JavaScript creators just make this a special case? Because otherwise I can't understand how this returns false.
Although either side of NaN===NaN contains the same value and their type is Number but they are not same. According to ECMA-262, either side of == or === contains NaN then it will result false value.
The math. isnan() method checks whether a value is NaN (Not a Number), or not. This method returns True if the specified value is a NaN, otherwise it returns False.
No, NaN is not equal to anything, including itself.
NaN stands for Not A Number and is one of the common ways to represent the missing value in the data. It is a special floating-point value and cannot be converted to any other type than float. NaN value is one of the major problems in Data Analysis.
Update 2
New to ECMAScript 6 is the Object.is() function. This is designed to be a further enhancement of the ===
check. One of the benefits of this new function is that Object.is(NaN, NaN)
will now return true. If you're able to utilize ECMAScript 6, then this would be the most readable and consistent solution for you.
Original
The proper way to check this would be:
isNaN(parseInt(variable))
If whatever you're checking is a NaN, that function will return true. This method is built into the JavaScript spec.
Using jQuery
jQuery built in their own isNaN
function originally to help counter some discrepancies between browsers, and add some additional checks so their version can be used instead of the one in VanillaJS.
Update for jQuery
After jQuery 1.7, they changed this function to $.isNumeric()
.
Documentation of the switch
If you take a look at this Stack Overflow question, you'll find plenty of times where isNaN()
returns what would intuitively be considered an "incorrect" answer, but is correct by the spec.
One of the big reasons to avoid the vanilla isNaN()
is that null
will return false
, making you think it is a number. However, the jQuery function covers a much larger range of intuitive results.
From their documentation:
As of jQuery 3.0 $.isNumeric() returns true only if the argument is of type number, or if it's of type string and it can be coerced into finite numbers. In all other cases, it returns false.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With