Manejo de BigInt y operadores nullish en JavaScript
Clase 27 de 35 • Curso de ECMAScript: Historia y Versiones de JavaScript
Resumen
Las siguientes características de ES2020 o ES11 que aprenderás son: nuevo tipo de dato bigint
y operador Nullish Coalescing (??
).
Big Int, enteros muy grandes
El nuevo dato primitivo bigint
permite manejar números enteros muy grandes. Existen dos formas de crear un bigint
: el número entero seguido de n
o mediante la función BigInt
const number1 = 45n
const number2 = BigInt(45)
typeof 45n // 'bigint'
JavaScript tiene límites numéricos, un máximo Number.MAX_SAFE_INTEGER
y un mínimo Number.MIN_SAFE_INTEGER
.
const max = Number.MAX_SAFE_INTEGER
const min = Number.MIN_SAFE_INTEGER
console.log(max) // 9007199254740991
console.log(min) // -9007199254740991
Después de los límites, los cálculos muestran resultados erróneos. Los bigint
ayudan a manejar operaciones de enteros fuera de los límites mencionados.
const increment = 2
const number = Number.MAX_SAFE_INTEGER + increment
const bigInt = BigInt(Number.MAX_SAFE_INTEGER) + BigInt(increment)
console.log(number) // 9007199254740992
console.log(bigInt) // 9007199254740993n
Se añade la misma cantidad a ambos tipos de datos, sin embargo, el tipo numérico da un resultado diferente al esperado.
Operador Nullish Coalescing
El operador nullish coalescing (??
) consiste en evaluar una variable si es undefined
o null
para asignarle un valor.
El siguiente ejemplo se lee como: ¿usuario.name
es undefined
o null
? Si es así, asígnale un valor por defecto "Andres"
, caso contrario asigna el valor de usuario.name
.
const usuario1 = {}
const nombre1 = usuario1.name ?? "Andres"
const usuario2 = {name: "Juan"}
const nombre2 = usuario2.name ?? "Andres"
console.log(nombre1) // 'Andres'
console.log(nombre2) // 'Juan'
Diferencia entre el operador OR y el Nullish coalescing
El operador OR (||
) evalúa un valor falsey. Un valor falsy es aquel que es falso en un contexto booleano, estos son: 0
, ""
(string vacío), false
, NaN
, undefined
o null
.
Puede que recibas una variable con un valor falsy que necesites asignarle a otra variable, que no sea null
o undefined
. Si evalúas con el operador OR, este lo cambiará, provocando un resultado erróneo.
const id = 0
const orId = id || "Sin id"
const nullishId = id ?? "Sin id"
console.log( orId ) // 'Sin id'
console.log( nullishId ) // 0
Contribución creada por Andrés Guano (Platzi Contributor).