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:

javascriptfunction 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

javascriptisFinite(valor);

Ejemplo

Ahora isFinite mostrará true, ya que el parámetro es un número:

javascriptlet num = 3;
console.log(isFinite(num));

Resultado de ejecutar el código:

javascripttrue

Ejemplo

Ahora isFinite mostrará false, ya que el parámetro no es un número:

javascriptlet num = 'abcde';
console.log(isFinite(num));

Resultado de ejecutar el código:

javascriptfalse

Ejemplo

Ahora isFinite mostrará false, ya que el parámetro es infinito:

javascriptlet num = Infinity;
console.log(isFinite(num));

Resultado de ejecutar el código:

javascriptfalse

Ejemplo

Ahora isFinite mostrará false, ya que 1/0 - esto es esencialmente Infinity (infinito):

javascriptlet num = 1 / 0;
console.log(isFinite(num));

Resultado de ejecutar el código:

javascriptfalse

Ejemplo

Ahora isFinite mostrará true, ya que la cadena vacía, que no es un número, es una excepción:

javascriptlet num = '';
console.log(isFinite(num));

Resultado de ejecutar el código:

javascripttrue

Ver también

  • la función isNaN,
    que realiza la verificación de NaN
  • el operador typeof,
    que determina el tipo de datos