¿Por qué comparar NaN con cualquier número en Math.max() devuelve NaN?
Por ejemplo Math.max(NaN,5,3,7) devuelve NaN.
También Math.max(Infinity, NaN, 5,3) también devuelve NaN.
NaN es un valor falso .
Pero Math.max(false,4,5) devuelve el mayor, es decir, 5.
Estaba obteniendo algunos números de una API cada segundo y comparé el número obtenido actual con el anterior. Pero en alguna búsqueda obtuvo NaN y después de eso el resultado fue constantemente NaN .
Entonces, ¿cuál es la razón de esto?
Esto se debe a que Math.max espera que todos los parámetros sean un número válido.
Como menciona la documentación:
Si al menos uno de los argumentos no se puede convertir en un número, el resultado es NaN.
El NaN no se considera un número válido, por lo que Math.max generará NaN
Math.max intenta convertir los valores pasados en números. Si no puede hacer eso, devuelve NaN.
+true es 1
+false es 0
Math.max(true, 0 ) devuelve 1
Math.max(Infinity, 1) devuelve Infinity
Math.max(NaN,5,3,7) devuelve NaN