Cuando isNaN no es isNan

Un bug misterioso de js

Stanislaw Ignacy Witkiewicz

archivado en: JavaScript / 7 marzo, 2015

Hoy me han pasado una de esas incidencias extrañas y divertidas.

En la tostadora el Explorer me aparecía el string null en un input en lugar de un espacio en blanco. Hasta ahí no hay de que extrañarse, pues ya sabemos que este navegador está tan mal hecho que resulta comprensible que sea incapaz de interpretar correctamente un valor nulo y lo convierta en una cadena: urf, urf, tarea titánica, sin duda! (por cierto, me gustaría saber cuánto dinero se invierte en el mundo para resolver incidencias relacionadas con el Explorer: la cifra puede ser desorbitada).

No, el rarismo no estaba ahí, sino en un filtro que había puesto en el js antes de enviar el valor... algo así:

value = ( isNaN(value) ) ? " " : value;

Es decir, si value no es un número (isNaN), pasa a ser una cadena vacía y, de lo contrario, su valor. Por lo tanto, ¿cómo es posible que estuviera llegando un valor null? Tengo que reconocer que la respuesta me resultó sorprendente. Tachán, tachán:

isNaN(null) //false

Esto es porque esta función trata de convertir el parámetro que se le pasa en un número y el null lo convierte en cero, que es un número, y lo mismo nos pasa con los valores booleanos, que convierte en un 1 o un 0...

isNaN(true); // false

Cosas veredes...

|| Tags:

Este artículo aún no ha sido valorado.

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

Los comentarios están cerrados.