ES2023: Novedades de JavaScript en 2023

ES2023

ES2023: Novedades de JavaScript en 2023

Ahora que estamos terminando el 2024, es un buen momento para ver qué novedades nos trajo JavaScript el año pasado 2023, es decir, vamos a ver las novedades de ES2023. Recordad que no es sensato utilizar las novedades de JavaScript tan pronto están disponibles. Pese a tener casi un año de antigüedad, en términos de programación son novedades muy «modernas», y es posible que los navegadores de tus usuarios no las soporten, así que úsalas con cuidado.

2023 no trajo muchas novedades, pero algunas son bastante interesantes. Así que, al turrón!

.findLast() y .findLastIndex()

Estos 2 nuevos métodos para los arrays, son simplemente los equivalentes a los métodos .find() y .findIndex(), solo que como sus nombres indican, empiezan a buscar desde el final del array hacia atrás.

console.log([1,2,3,4,5,1].findLastIndex(n => n==1));

Así que ya no es necesario darle la vuelta al array con .reverse() antes de buscar por el final.

Soporte para Hashbang (Shebang)

Básicamente ahora podemos empezar un script JavaScript con #! y la información necesaria para que el sistema operativo pueda ejecutar dicho script (los que estén acostumbrados a crear scripts bash en linux ya sabrán de que va la cosa).

Lo más sencillo es ver un ejemplo. Podemos escribir en un archivo .js algo como esto:

#!/usr/bin/env node
console.log("Hola mundo");

y después ejecutar directamente el archivo .js como si fuera un archivo ejecutable (obviamente necesitarás tener instalado node.js y si utilizas Windows tendrás que usar El Subsistema de Windows para Linux y su consola de comandos).

Usar símbolos como claves para WeakMaps

Los WeakMaps son como array asociativos (clave -> valor) donde las claves son objetos. Además de esta particularidad (que un objeto haga la función de clave), otra importante es que el recolector de basura de JavaScript puede eliminar el objeto aunque exista una referencia a dicho objeto en un WeakMap (por eso se dice que estas referencias son «débiles» [Weak]).

Esta novedad de JavaScript permite utilizar símbolos como clave (y no solamente objetos). Ten en cuenta que básicamente esta novedad existe para facilitar otras propuestas de novedades futuras que aún no se han aprobado. Así que no le des muchas vueltas.

const clave1 = { nombre: "Pepe" };
const valor1 = { datosAdicionales: 123 };
const clave2 = Symbol('administrador');
const valor2 = { datosAdicionales: 456 };
const mapa = new WeakMap();
mapa.set(clave1, valor1);
mapa.set(clave2, valor2); // la clave es un símbolo!

Nuevos métodos para copiar arrays

Y terminamos con la que en mi opinión es la novedad más  interesante, una serie de nuevos métodos para copiar arrays. Concretamente, los siguientes métodos:

  • .toReversed() – devuelve una copia del array pero con el orden de los elementos invertido (ya no es necesario sacar una copia y después cambiar el orden con .reverse())
  • .toSorted(funcionDeComparacion) – devuelve una copia del array pero con el orden de los elementos ordenado (ya no es necesario sacar una copia y después ordenar los elementos de dicha copia con .sort())
  • .toSpliced(inicio, cantidadBorrar, …items) – es lo mismo que el método .splice(), y funciona exactamente igual. La diferencia, como ya habrás imaginado, es que este método devuelve una copia modificada del array (y no un array con los elementos eliminados).
  • .with(indice, valor) – permite obtener una copia de un array, pero modificando uno de sus elementos.
const arr = ['c','a','b','d'];
const copia_invertida = arr.toReversed();
console.log(copia_invertida); // ['d', 'b', 'a', 'c']
const copia_ordenada = arr.toSorted();
console.log(copia_ordenada); // ['a', 'b', 'c', 'd']
const copia_cortada = arr.toSpliced(1, 2);
console.log(copia_cortada); // ['c', 'd']
const copia_modificada = arr.with(3, 'z');
console.log(copia_modificada); // ['c', 'a', 'b', 'z']

Insisto, ninguno de estos métodos modifica el array original. Obviamente, estas mejoras están pensadas en facilitar la inmutabilidad de los datos (cosa muy útil cuando trabajas con ciertos frameworks o librerías como por ejemplo React).

Conclusion

Pocas novedades, pero alguna cosita interesante hay. 🙂

Si te has quedado con ganas de más novedades, puedes echarle un vistazo al artículo con las novedades del año anterior, es decir, con las novedades de ES2022.

Escribe un comentario