En muchas ocasiones nos interesa verificar que una variable contiene un valor numérico. Un atajo podría ser usar:

if (!valorNumerico) { }

El problema, es que con esa condición dejamos fuera al valor 0. Así que lo siguiente que se suele hacer, es tener fórmulas del estilo:

if (null !== valorNumerico && undefined !== valorNumerico && Infinity !== valorNumerico && !isNaN(valorNumerico)) { }

Algo que como se puede apreciar es muy poco eficiente, y también bastante feote.

Es por ello que vamos a ver como verificar que tenemos un valor real o uno entero de una forma mucho más sencilla. Para ello, nos valdremos de los funciones Number.isFinite() y Number.isInteger().

// Si se quiere comprobar un valor real  
Number.isFinite(Infinity);  // false  
Number.isFinite(-Infinity); // false  
Number.isFinite(NaN);       // false  
Number.isFinite(undefined); // false  
Number.isFinite(null);      // false  
Number.isFinite('0');       // false
Number.isFinite(0);         // true  
Number.isFinite(264);       // true  
Number.isFinite(-1847.23);  // true  

// Si se quiere comprobar un valor entero  
Number.isInteger(Infinity);  // false  
Number.isInteger(-Infinity); // false  
Number.isInteger(NaN);       // false  
Number.isInteger(undefined); // false  
Number.isInteger(null);      // false  
Number.isInteger('0');       // false  
Number.isInteger(-1847.23);  // false  
Number.isInteger(0);         // true  
Number.isInteger(264);       // true  
Number.isInteger(-5689437);  // true

Como habéis podido comprobar, las dos funciones anteriores, nos ofrecen una forma muy sencilla de validar si un elemento es un número, y aparte verificar que es finito. Ya que por ejemplo, se podría hacer un typeof de la variable, pero los valores Infinity y -Infinity tienen como tipo number, y en caso de querer comprobar que es un entero, deberíamos verificar algunas cosillas extra. En mi opinión lo que hemos visto, queda más elegante, y aparte nos proporciona información extra de qué es lo que se desea comprobar.

Comparte este artículo con quien quieras
Orientación a objetos con JavaScript (ES6). Parte 4. Método valueOf()
Iteradores en JavaScript. Parte 1. Symbol.iterator

Leave a Comment

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.