No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Regálate acceso ilimitado a todos los cursos por 1 año a precio especial de Navidad 🎄

Antes: $199

Currency
$149/año
regístrate

termina en:

16D
14H
31M
27S

ES11: BigInt y Nullish

30/38
Recursos

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).

Aportes 12

Preguntas 5

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Límites numéricos en JavaScript

📏 JavaScript tiene límites numéricos, un máximo Number.MAX_SAFE_INTEGER y un mínimo Number.MIN_SAFE_INTEGER. Fuera de estos límites, los cálculos matemáticos pueden fallar y mostrar resultados erróneos. Con BigInt esto se resuelve.
.

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

Hola [email protected] 😃

ES11:

  • Números grandes
const aBigNumber = 8907245920742093847n;
const anotherBigNumber = BigInt(8907245920742093847);
console.log(aBigNumber);
console.log(anotherBigNumber);
  • Valor nulo
const anotherNumber = null;
const validate = anotherNumber ?? 5;
console.log(validate);

En mi caso si me ha tocado trabajar con BigInt en proyectos reales. En el sector financiero, en especial en el caso de Colombia, se manejan cifras muy altas que al representar en números normales y realizar operaciones con ellos pueden causar errores de precisión. Es importante tener en cuenta que existe este recurso.

Diferencias entre Or operator y Nullish Coalecing

Or operator: Retorna el valor a la derecha si la expresión de la izquierda es FALSY (0, “”, false, NAN, undefined, null)

Nullish coalecing: retorna el valor a la dera si la expresión es null o undefined

Muy importante, lo que dice el maestro Oscar, en él minuto 4. Sobre los nombres de las variables y no nomas con las variables sino también con funciones, métodos, clases.

saludos!!

JavaScript tiene límites numéricos, un máximo y un mínimo.
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.
Se añade la misma cantidad a ambos tipos de datos, sin embargo, el tipo numérico da un resultado diferente al esperado.

¿y cuál sería un nombre correcto a las variables o funciones?

SE PUEDE REGISTRAR CUALQUIER VALOR YA SEA STRING, VALUE O BOOLEAN PARA QUE NOS REMPLACE EL ERROR

EJEMPLO:

string:

const anotheNumber = null;
const value = anotheNumber ?? “error”;
console.log (value);

boolean:

const anotheNumber = null;
const value = anotheNumber ?? true;
console.log (value);

9 007 199 254 740 991 = 2^53

Hagan lo prueba con una calculadora.

|| Vs ??

Nullish coalecing (??): Retorna el valor a la deracha solo si la expresión es null o undefined
Or operato (||): Retorna el valor a la derecha si la expresión de la izquierda es FALSY: 0, ""(str vacío), false, NaN, undefined, null.

La particularidad de ||, OR es porque (según yo)

Esto sucede porque OR es para booleanos y en estos casos siempre es preferible aceptar un valor que sea true: 1, -1, "ola", " "(string), true.

Compruébalo tu mismo, es baste fácil cambiar los valores aquí.

const anotherNumber = null;
const validate = anotherNumber ?? 5;
console.log(validate);

Amigos, si tienen duda sobre el porque los valores del BigInt son distintos, revisen el link de stackoverflow que alguién puso en la sección de preguntas.