JavaScript. ¿Qué características de ES2019 deberías probar?

Si hay una herramienta digital que no para de evolucionar, y de forma regular, esta es JavaScript. Este año, la versión 10 de la especificación del lenguaje ECMAScript ha sido lanzada con el objetivo de mejorar la experiencia de los desarrolladores, y obviamente del usuario final con los productos desarrollados con este lenguaje de programación.

Como en la red todo funciona muy rápido, y todo (o casi todo) vuela a la “velocidad de un tweet”, hoy creo que vale la pena echar un vistazo a las nuevas características y entender cómo puedes usarlas en tus productos digitales o aplicaciones.

¿Qué es ECMAScript, y qué es ES2019?

ECMAScript (ES para abreviar) es una especificación de lenguaje de script estandarizada por ECMA International en ECMA-262 e ISO/IEC 16262. ES fue creada para estandarizar el lenguaje JavaScript, a fin de fomentar múltiples implementaciones estándar independientes de los proveedores (vendors) de navegadores. ECMAScript evoluciona cada año con nuevas características recibidas previamente como propuestas. En este artículo te comparto algunas de las nuevas características de 2019: ES2019.

Nuevas características de ECMAScript (Javascript) - ES2019

Array.flat()

Array.flat() es un método que retorna un nueva matriz (array) con cualquier submatriz aplanada. Técnicamente, el método flat() crea una nueva matriz con todos los elementos de una submatriz concatenados recursivamente a una profundidad específica.

flat() puede recibir un argumento de profundidad. El argumento es, por tanto opcional, y si llamas a Array.flat() sin ningún argumento sólo se aplanará un nivel de profundidad. El objetivo de Array.flat() es, por tanto el de aplanar listas anidadas a una profundidad especificada por un parámetro entero en la llamada a la función.

Ejemplo

Ejemplo de Array.flat()

String.trimStart() y String.trimEnd()

Si ya conoces string.trim(), supongo que ya has adivinado para qué sirven estas dos nuevas características. string.trim() sirve para eliminar el espacio en blanco del inicio y el final de una cadena de caracteres (string).

Con trimStart() y trimEnd() puedes decidir si quieres eliminar el espacio inicial o final de la cadena de caracteres, respectivamente.

Ejemplo

Ejemplo de trimStart() y trimEnd()

Catch Binding opcional

El catch binding opcional” permite que los desarrolladores usen la declaración try/catch sin el parámetro de error dentro del bloque catch. La utilidad es obvia: puedes pensar que tiene sentido en situaciones en las que quieres ignorar el error, porque ya sabes cual será, por ejemplo.

Ejemplos

Antes de ES2019, “catch binding” era obligatorio en el bloque “try...catch”, lo usaras o no.

Catch Binding antes de ser opcional

Ahora puedes utilizar try/catch de la siguiente forma en ES2019

Catch Binding opcional

Object.fromEntries()

El objetivo de Object.fromEntries() es el de convertir una lista de pares clave-valor en un objeto. Ojo que formEntries() solamente acepta iterables.

Ejemplo

Object.fromEntries()

Symbol.description

Symbol es un tipo de datos primitivo de JavaScript, juntamente con string, number, boolean, null y undefined. Los Symbols fueron introducidos en ES6 y pueden ser usados como un identificador para propiedades de objetos.

La propiedad description es solo de lectura y se puede usar para obtener la descripción de un objeto Symbol.

Ejemplo

Symbol.description

Subsume JSON (a.k.a. JSON ⊂ ECMAScript)

ECMAScript ahora es superconjunto de JSON. ¿Qué significa esto? Bueno, resulta que anteriormente las cadenas de caracteres de ECMAScript no podian contener el separador de linea (U+2028), ni el separador de párrafo (U+2029).

El hecho de que se gestionasen como terminadores de linea generaba errores de sintaxis. Sin embargo, la cadenas de caracteres de JSON sí que podían contener U+2028 y U+2029 sin generar errores.

En ES2019 tus desarrolladores ya no tendrán esta restricción, y pasarán a contar con la misma  regla para cadenas de caracteres para ECMAScript y JSON.

Ejemplo

Subsume JSON (a.k.a. JSON ⊂ ECMAScript)

Cambios en Function.toString()

Los objetos de función siempre tienen el método toString() para obtener la representación de cadena de una función. En ES2019, la función toString() ahora conserva los comentarios y los espacios en blanco para obtener la representación de cadena de caracteres exacta de la función tal como la definimos.

Ejemplo

Cambios en Function.toString()

Estabilidad de Array.Sort()

ES2019 garantiza una clasificación estable de un listado. Anteriormente, la especificación permitía algoritmos de clasificación inestables como QuickSort. Ahora si tienes una matriz de objetos y las clasificas sobre una clave determinada, los elementos mantienen su posición relativa a los otros elementos con la misma clave. :)

Ejemplo

Estabilidad de Array.Sort()

Conclusión

Esto es todo, de momento. Las propuestas de ECMAScripts siguen creciendo y si tienes más interés, las puedes ir siguiendo por aquí. Estas nuevas propuestas y sobretodo las nuevas implementaciones mejorarán seguramente la experiencia de tus desarrolladores y de sus códigos, reduciendo la verbosidad y mejorando la legibilidad.

¿Qué te parecen las características nuevas de JavaScript?

Foto: Markus Spiske from Pixabay

Fuentes: