Reputation: 3
Why comparing NaN to any number in Math.max() returns NaN??
For example Math.max(NaN,5,3,7)
returns NaN.
Also Math.max(Infinity, NaN, 5,3)
return NaN too.
NaN is a falsy value.
But Math.max(false,4,5)
does returns the largest i.e. 5.
I was getting some numbers from an API every second and compared the current fetched number with the previous one. But in some fetch it got NaN
and after that the result was constantly NaN
.
So what's the reason for this?
Upvotes: 0
Views: 526
Reputation: 132
That is because the Math.max
expect all the parameter to be a valid number.
As the documentation metioned:
If at least one of arguments cannot be converted to a number, the result is NaN.
The NaN
is not considered a valid number, so the Math.max
will output NaN
Upvotes: 1
Reputation: 1625
Math.max tries to convert passed values to numbers. If it cannot do that, it returns NaN.
+true
is 1
+false
is 0
Math.max(true, 0
) returns 1
Math.max(Infinity, 1)
returns Infinity
Math.max(NaN,5,3,7)
returns NaN
Upvotes: 1