BigInt es un objeto incorporado que nos da JavaScript para representar un número entero más grande, mayor a 253 - 1
(el número más grande que puede representar el objeto tipo Number
de manera confiable).
Para representar un BigInt se utiliza una n
al final de un número entero o llamando a la función BigInt ()
.
const number = 9007199254740991;
const myBigInt = 9007199254740991n;
const otherBigInt = BigInt(9007199254740991);
console.log(myBigInt + 2n); // 9007199254740993n, OK!
console.log(otherBigInt + 2n); // 9007199254740993n, OK!
console.log(number + 2); // 9007199254740992, WTF!
Con typeof
puedes ver claramente que estamos utilizando otro tipo de dato.
typeof 10 // number
typeof 10n // bigint
Operadores
Al igual que Number
, con BigInt podemos usar los operadores +
, -
, *
, /
, **
y %
.
const bigNumber = 9007199254740991n;
const bigNumberPlus = bigNumber + 5n // 9007199254740996n
bigNumberPlus - 2n // 9007199254740994n
bigNumber * 2n // 18014398509481982n
bigNumber % 4n // 3n
const bigNumberExp = 2n ** 54n // 18014398509481984n
El operador /
también funciona con BigInt, solo que si el resultado llegase a ser decimal, este se va a redondear hacía 0
.
const value = 6n / 2n;
// 3n
const round = 11n / 2n; // 5n (no 5.5n)
Comparaciones y condicionales
Un BigInt no es estrictamente igual a un Number
, pero en términos generales si lo es.
0n === 0 // false
0n == 0 // true
De igual forma, estos se pueden comparar.
1n < 12 // true
5n > 1 // true
10n < 4 // false
10n > 10 // false
10n >= 10 // true
Un BigInt se comporta como un Number
en algunos casos:
En un if
:
if (0n) {
console.log("Hola desde el if");
} else {
console.log("Hola desde el else");
}
// Hola desde el else
En operadores lógicos:
0n || 12n // 12n
0n && 12n // 0n
!12n // false
!0n // true
Usando la función Boolean
:
Boolean(0n) // false
Boolean(12n) // true