- https://alligator.io/js/es2019/
ECMAScript (ES para abreviar) es una especificación de lenguaje de scripting estandarizada por ECMA International en ECMA-262 e ISO / IEC 16262. Fue creada para estandarizar el lenguaje JavaScript, a fin de fomentar múltiples implementaciones estándar independientes de los proveedores de navegadores. Evoluciona cada año con nuevas funcionalidades.
En la edición de 2019 de la especificación ECMAScript se agregaron muchas características nuevas, y aquí cubriré algunas de estas nuevas características. Personalmente, me encanta cómo javaScript sigue evolucionando y mejorando de forma regular.
Array.flat()
Array.flat() devuelve una nueva matriz con cualquier sub-matriz (s) aplanada. Una llamada a Array.flat() sin ningún argumento solo aplanará un nivel de profundidad. Se puede proporcionar un argumento de profundidad opcional o simplemente se puede llamar de forma consecutiva.
let arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]];
arr.flat(); // [1, 2, 3, 4, 5, 6, Array(4)];
arr.flat().flat(); // [1, 2, 3, 4, 5, 6, 7, 8, 9, Array(3)];
arr.flat(3); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Array.flatMap()
El método flatMap() es idéntico al método de mapa ES6, pero también aplana el arreglo al mismo tiempo. El método flatMap() primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. flatMap() es a menudo bastante útil, ya que fusionar ambos en un solo método es un poco más eficiente.
let arr = [1, 2, 3, 4, 5];
arr.map(x => [x, x * 2]);
// [Array(2), Array(2), Array(2)]
// 0: (2)[1, 2]
// 1: (2)[2, 4]
// 2: (2)[3, 6]
arr.flatMap(v => [v, v * 2]);
// [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]
String.trimStart() & String.trimEnd()
String.trimStart() se puede usar para recortar el espacio en blanco desde el inicio de una cadena.
let saludo = " Hola Todos";
console.log(saludo.trimStart());
// "Hola Todos"
let greeting = "Hola Todos ";
console.log(greeting.trimEnd());
// "Hola Todos"
Error opcional en catch
permite a los desarrolladores usar try / catch sin el parámetro de error dentro del bloque catch.
try {
haceCosasQuePuedenTronar()
}
catch {
noPudimosRecuperarnosYNoVamosADesperdiciarUnaVariableMas()
}
Object.fromEntries()
Crea un objeto o transforma pares clave-valor en un objeto. Solo acepta iterables, por ejemplo: Object.fromEntries(algunIterable).
let entradas = new Map([["nombre", "Juan"], ["Edad", 22]]);
console.log(Object.fromEntries(entradas));
// { Nombre: 'Juan', Edad: 22 }
Symbol.description
La propiedad de descripción de solo lectura es una cadena que devuelve la descripción opcional de los objetos de Símbolo.
let unSimbolo = 'Mi Simbolo';
let objetoSimbolo = Symbol(unSimbolo);
console.log(objetoSimbolo) // Symbol(unSimbolo);
console.log(String(objetoSimbolo) === `Symbol(${unSimbolo})`); // true
console.log(objetoSimbolo.description); // "Mi Simbolo"
Conclusión
Las operaciones sobre estructuras de datos, son las que hacen esta versión realmente interesante de revisar y hacen que javascript sea un lenguaje bonito. Úsenlas con responsabilidad!
A mi parecer lo del try/catch sin error es solo una compuerta para que tu código sea menos legible y depurable, si de verdad tienes que usar esta clausula no uses, este “feature”.
Symbol.description me parece otro nice to have, que nadie usara nunca.
Muy bueno!
[…] es el caso de javascript, que a pesar de haber sido concebido como un lenguaje de scripting, en sus ultimas versiones ha incorporado formas de hacer programación funcional dentro de su librería […]