Siguiendo con el repaso a las novedades de ES6, vamos a explorar los nuevos métodos estáticos que aporta ECMAScript 2015 a la clase Number.

Nuevos literales para enteros

A partir de ahora, se pueden definir integers a partir de literales tanto en binario como en octal:

// ES5 - hexadecimal
0xFF; //255

//ES6 - binary
0b101; //5

// ES6 - octal
0o101 ; //65

Métodos estáticos de Number

Number.isFinite()

Nos permite saber si un numero es finito o no.

Number.isFinite(Infinity); //false
Number.isFinite(NaN); //false
Number.isFinite(5); //true

Number.isInteger()

Nos permite saber si un número es entero o no.

Number.isInteger(-1); //true
Number.isInteger(1); //true
Number.isInteger(1.0); //true
Number.isInteger(1.1); //false
Number.isInteger(Infinity); //false
Number.isInteger(NaN); //false
Number.isInteger('1'); //false

Number.isSafeInteger()

Nos permite saber si un entero es seguro, es decir, pertenece a un rango de 53 bits por lo que no hay pérdida de precisión.

Debido a que Javascript utiliza un formato numérico de coma flotante de doble precisión, Un safe integer en Javascript queda comprendido entre Number.MIN_SAFE_INTEGER (de valor -2⁵³+1) y Number.MAX_SAFE_INTEGER (de valor 2⁵³-1). Los valores fuera de ese umbral, se truncan a dicho límite.

Así, con el método isSafeInteger() podemos comprobar de forma directa si el entero se encuentra dentro del rango seguro.

Number.isSafeInteger(1); //true
Number.isSafeInteger(1.1); //false
Number.isSafeInteger(Math.pow(2, 53)-1); //true
Number.isSafeInteger(Math.pow(2, 53)); //false 

Number.isNaN()

Indica si el número tiene valor NaN (Not A Number), y es ligeramente distinto a la antigua función global isNaN()

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// e.g. these would have been true with global isNaN()
Number.isNaN("NaN");      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

// These all return false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(1);
Number.isNaN("1.1");
Number.isNaN(" ");

Number.parseFloat()

Es equivalente a la antigua función global parseFloat().

var floatNum = Number.parseFloat(string);

Number.parseInt()

Es equivalente a la antigua función global parseInt().

var int = Number.parseInt(string[, radix]);

Hasta aquí las novedades de la clase Number, pequeñas mejoras que seguramente simplificaran un poco nuestro código.

¡Saludos!

¿Te ha gustado el artículo? ¡Compártelo!