No usar isNaN() a la ligera

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

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-aNumber”.

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:

function soloNumeros ( n ) {
    return /^\d+$/.test( n );
}​
No usar isNaN() a la ligera

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s