Jimmy Neutron
Jimmy Neutron

Reputation: 3

Why Math.max(NaN, <any_number>) returns NaN?

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

Answers (2)

Shawn
Shawn

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

Tukkan
Tukkan

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

Related Questions