Función isFinite
La función isFinite para verificar si el parámetro
es un número finito (es
decir, no una cadena, matriz, etc. y no infinito
positivo o negativo).
Cómo funciona esta función: devolverá false,
si el número es infinito positivo o negativo
(es decir, Infinity)
o no es un número (es decir, NaN),
en otros casos devolverá true.
Es decir, las cadenas, matrices, etc. se convertirán
en NaN y, en consecuencia, devolverán false.
Sin embargo, hay excepciones: una cadena vacía
'' devuelve true, una cadena con espacios ' '
también devuelve true, null
devuelve true, para los valores true y false
también se devuelve true.
Esto sucede porque estos valores
se convierten en números, y no en NaN.
Si necesita una verificación realmente precisa
de números, que no considere número una cadena
de espacios, valores booleanos y valores especiales,
utilice la siguiente función isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Vamos a entender cómo funciona.
La función isFinite convierte el parámetro
a número y devuelve true, si este no es Infinity,
-Infinity o NaN.
Así, la parte derecha descartará los valores
claramente no numéricos, pero dejará valores
como true, false, null, cadena vacía '' y
cadena con espacios, ya que se convierten correctamente
a números.
Para descartar estos valores, se necesita la función
parseFloat,
que para true, false, null, '', ' '
devolverá NaN. Así es como funciona la función parseFloat:
convierte el parámetro a cadena, es decir, true,
false, null se convierten en 'true', 'false',
'null', y luego lee un número de ella,
mientras que la cadena vacía y la cadena con espacios
dan NaN. Luego, el resultado de parseFloat se procesa
con !isNaN,
para obtener true o false en lugar de NaN.
Como resultado, se descarta todo, excepto las cadenas numéricas
y los números ordinarios.
Sintaxis
isFinite(valor);
Ejemplo
Ahora isFinite mostrará true,
ya que el parámetro es un número:
let num = 3;
console.log(isFinite(num));
Resultado de ejecutar el código:
true
Ejemplo
Ahora isFinite mostrará false,
ya que el parámetro no es un número:
let num = 'abcde';
console.log(isFinite(num));
Resultado de ejecutar el código:
false
Ejemplo
Ahora isFinite mostrará false,
ya que el parámetro es infinito:
let num = Infinity;
console.log(isFinite(num));
Resultado de ejecutar el código:
false
Ejemplo
Ahora isFinite mostrará false,
ya que 1/0 - esto es esencialmente Infinity
(infinito):
let num = 1 / 0;
console.log(isFinite(num));
Resultado de ejecutar el código:
false
Ejemplo
Ahora isFinite mostrará true,
ya que la cadena vacía, que no es un número,
es una excepción:
let num = '';
console.log(isFinite(num));
Resultado de ejecutar el código:
true