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
En muchas ocasiones nos interesa verificar que una variable contiene un valor numérico. Un atajo podría ser usar:
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:
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()
yNumber.isInteger()
.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 tiponumber
, 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.jose