Compara variables en javascript con Is.js

Compara variables en javascript con Is.js
Escrito 3 years ago

Uno de los mayores defectos que tiene javascript es su sistema de comparación de variables. Para todos los programadores novatos, y no tan novatos, el sistema de comparación de javascript es confuso, como poco. Hay demasiados valores genéricos que aparecen en distintas situaciones: null, undefined, NaN, Infinity, -Infinity. Todo estos valores pueden ocasionar dolores de cabeza a muchos programadores.

Las malditas comparaciones en javascript

Esta imagen es un gráfico que representa como funciona el operador == en javascript.

gráfico operador igual en javascript

Si nos fijamos bien, descubrimos detalles bastantes siniestros. Por ejemplo que 0 == "0", NaN != NaN false == 'false' o 1 == [1]. Los operadores de comparación siempre han sido un gran problema con este lenguaje. ¡Ni siquiera la diagonal de la imagen está completa! ¿Como es posible que para javascript la expresión [] == [] sea Falsa?:angry:

Is.js al rescate

Is.js es una librería que resuelve este problema de una forma sencilla y elegante. Basta con dar una mirada rápida a su manual, para entender como funciona. En esta entrada veremos algunos ejemplos que pueden ser útiles.

Como funciona

Comprobar si los datos son números
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// Comprueba si el parámetro de entrada es un número.
is.number(42);
// true

// Comprueba si el parámetro de entrada NO es un número.
is.not.number('42');
// true

// Comprueba si todo los parámetros de entradas son números
is.all.number('foo', 1);
// false

// Comprueba si por lo menos uno de los parámetros de entrada es un número
is.any.number({}, 2);
// true
Comprobar si los datos son cadenas de texto
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// Comprueba si el parámetro de entrada es una cadena.
is.string('foo');
// true

// Comprueba si el parámetro de entrada NO es una cadena
is.not.string(['foo']);
// true

// Comprueba si todo los parámetros de entrada son cadenas.
is.all.string('foo', 1);
// false

// Comprueba si al menos uno de los parámetro de entrada es una cadena.
is.any.string('foo', 2);
// true

Como veis en ambos ejemplos el funcionamiento es bastante sencillo y similar.

  1. is Es la variable principal de la librería.

  2. Un modificador opcional:

    1. not Comprueba que el dato es distinto del tipo de dato que estamos comparando.

    2. all Comprueba que todos los parámetros de entrada son del tipo de dato que estamos comparando.

    3. any Comprueba que por lo menos uno de los parámetro sea del tipo de dato que estamos comparando.

  3. Y un método que especifica que queremos comprobar.

Bastante simple.

Comprobar si la variable es NaN
1
2
3
4
5
6
7
8
is.nan(NaN);
// true
is.not.nan(42);
// true
is.all.nan(NaN, 1);
// false
is.any.nan(NaN, 2);
// true

Pero no solo compara tipo de datos. También compara fechas, expresiones regulares y los entornos donde se ejecuta javascript.

Más ejemplos

Comprobar si la cadena es una dirección e-mail
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
is.email('test@test.com');
// true
is.email('foo');
// false
is.not.email('foo');
// true
is.all.email('test@test.com', 'foo');
// false
is.any.email('test@test.com', 'foo');
// true
Comparar si un número está dentro de un rango
1
2
3
4
5
6
7
// Comprueba si 30 está entre 20 y 40
is.within(30, 20, 40);
// true

// Comprueba si 40 NO está entre 30 y 35
is.not.within(40, 30, 35);
// true
Comprueba el navegador en el que es ejecuta javascript
1
2
3
4
5
6
7
8
is.ie(8);
// True si javascript se está ejecutando en Internet Explorer 8
is.edge()
// True si javascript se está ejectuando en Microsoft edge
is.chrome();
// True si javascript se está ejecutando en Chrome.
is.firefox();
// True si javascript se está ejecutando en Firefox

Esto son solo algunos ejemplos de lo que puede hacer Is.js. Una librería javascript que os puede resultar muy útil en muchas situaciones.

Comentarios