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
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)
console.log(min)
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)
console.log(bigInt)
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)
console.log(nombre2)
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 )
console.log( nullishId )
Contribución creada por Andrés Guano (Platzi Contributor).
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?