ES2021 - Novedades

Nueva versión de ECMAScript

ES se actualiza e su versión 2021, agregando mejoras de rendimiento y, sobre todo, features a nivel lenguaje. Les dejamos un listado para ir viendo de que se trata.

Separadores Numéricos

Una gran novedad para cuando programamos con números grandes y necesitamos separarlos en grupos de decimales. En esta versión el caracter guión-bajo empleado en datos de tipo numérico será utilizado para separar digitos. Se trata solo de una forma de escritura visual, no afecta ni rendimiento ni al sistema en si:

1_000_000        // Así podemos escribir el número 1 millón de forma clara
1_234_567.89     // Y al ser un número sigue aceptando decimales
0.000_000_001    // Incluso sirve para separar número decimales muy chicos

Función replaceAll

Como ocurre con otros lenguajes, finalmente vamos a poder utilizar una función para reemplazar todas las concurrencias de un string sin recurrir a regex. No se trata de una versión más optimizada, en esencia es lo mismo que ya teníamos pero a nivel sintaxis está bastante mejor.

'abc'.replace(/a/g, '1')     // Imprime '1bc'
'abc'.replaceAll('a', '1')   // Imprime '1bc' 

Operadores Lógicos al Asignar variables

Se presentan nuevos operadores lógicos al momento de asignar variables, lo que pretende simplificar la estructura de los IF para determinadas acciones. Tendremos tres opciones, ||= que asignará el valor siempre y cuando la condición previa sea falsa; &&= que asignará el valor siempre y cuando la condición previa sea verdadera; y ??=.

// Así lo solemos hacer en JS
if (!var1) {
var1 = 1;
}

// Así lo podemos hacer con el operador lógico, es equivalente
var1 ||= 1;

Promesas

La promesas ahora podrán ser de tipo any y utilizar objetos de tipo AggregateError para definir errores en los request:

Promise.any([
  fetch('https://hola.mundo/').then(() => 'home'),
  fetch('https://hola.mundo/blog').then(() => 'blog')
]).then((r) => {
  // Todos los request se ejecutaron bien
  console.log(r);
}).catch((error) => {
  // Todos los request fueron rechazados
  console.log(error);
});

Nuevos Objetos

Nuevos objetos disponibles, concretamente tendremos dos: WeakRef y FinalizationRegistry. Con WeakRef podremos tener una referencia "débil" a un objeto ya existente, de esa manera al compararlos entre sí por más que contengan el mismo contenido serán distintos.

// t y wr no son considerados el mismo objeto
let t = {}; let wr = new WeakRef(t);

Por su parte, FinalizationRegistry permite limpiar el callback de un objeto para evitar que se almacene en un gargabe collector (similar a las subscripciones de Observables en RxJS).

// Creación de un registro
const registry = new FinalizationRegistry(value => {
  // ...
});

registry.register(myObject, "hola mundo", myObject);
// Si ya no es necesario, podemos limpiar el objeto previamente registrado
registry.unregister(myObject);

Entradas Relacionadas

es2021 javascript ecmascript
ES2021 - Novedades
Ignacio Buioli 29 de julio de 2021
2 min. de lectura
Compartir
Categorías
Archivar