Ya sabemos que JavaScript, ademas de ser raro, no es perfecto. Muchas funciones no se pueden utilizar a la ligera. Una de ellas es isNaN().
isNan()
isNaN() es una función que devuelve true o false dependiendo de si el parametro pasado no es o es un numero. Es decir nos dice si el argumento “is Not-a–Number”.
Hoy mismo he visto que se intentaba validar si una entrada de usuario contenía caracteres que no eran dígitos del 0 al 9. Y se hacia de la siguientes manera:
if ( isNaN( entrada ) ){ console.log('La entrada no contiene caracteres del 0 al 9, por lo tanto no es un numero'); }
A simple vista, la deducción puede parecer lógica y acertada, pero cuando utilizamos isNaN():
isNaN(45) //false isNaN('45') //false isNaN('RT') //true isNaN('') //false isNaN(' ') //false isNaN('44.4') //false isNaN('44,4') //true
vemos que cuando se pasa una cadena de texto vacía o con espacios en blanco devuelve false dando a entender que el parámetro es un numero valido.
Para conseguir lo que se quería aquí se tendría que haber usado una expresión regular:
/^\d+$/.test(parametro)
que pasado a una función: