isNaN () (Español)

Desde las primeras versiones de la especificación de la función isNaN, su comportamiento para argumentos no numéricos ha sido confuso. Cuando el argumento de la función isNaN no es de tipo Número, el valor se convierte primero en un Número. Luego, el valor resultante se prueba para determinar si es NaN. Por lo tanto, para los no números que cuando se coaccionan a tipo numérico dan como resultado un valor numérico no NaN válido (en particular, la cadena vacía y las primitivas booleanas, que cuando se coaccionan dan valores numéricos cero o uno), el valor devuelto «falso» puede ser inesperado; la cadena vacía, por ejemplo, seguramente «no es un número». La confusión surge del hecho de que el término «no es un número» tiene un significado específico para los números representados como valores de coma flotante IEEE-754. La función debe interpretarse como una respuesta a la pregunta, «¿este valor, cuando se coacciona a un valor numérico, es un valor IEEE-754» No es un número «?»

ECMAScript 2015 contiene el Number.isNaN() función. Number.isNaN(x) es una forma confiable de probar si x es NaN o no. Sin embargo, incluso con Number.isNaN, el significado de NaN sigue siendo el significado numérico preciso y no, «no es un número». De manera alternativa, en ausencia de Number.isNaN, la expresión (x != x) es una forma más confiable de probar si la variable x es NaN o no, ya que el resultado no está sujeto a los falsos positivos que hacen que isNaN no sea confiable.

Un polyfill para isNaN sería (el polyfill aprovecha la característica única de nunca igual a sí mismo de NaN):

Write a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *