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
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
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.
Ahora puedes utilizar try/catch de la siguiente forma en ES2019
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
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
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
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
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
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: