Are you a Number?
Number.isNaN() and isNaN() behave differently.
Number.isNaN() | isNaN() | |
---|---|---|
'asdf' |
false | true |
undefined |
false | true |
'10f' |
false | true |
{} |
false | true |
"NaN" |
false | true |
The MDN docs explain their differences as isNaN() coerces the parameter to a number.
Note that TypeScript only accepts unknown
as the parameter type, even though JS handles additional cases (i.e. undefined
).
Cases with the same behaviour:
Number.isNaN() | isNaN() | |
---|---|---|
123 |
false | false |
'123' |
false | false |
'' |
false | false |
' ' |
false | false |
null |
false | false |
[] |
false | false |
Infinity |
false | false |
false |
false | false |
0/0 |
true | true |
NaN |
true | true |
Further Reading
[Number.isNaN() - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#) |
[isNaN() - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN) |