ECMAScript 2019
Número de versión de JavaScript
las versiones antiguas de JS se nombran por números: ES5 (2009) y ES6 (2015).
Desde 2016, las versiones se nombran por años: ECMAScript 2016, 2017, 2018, 2019, ...
Nuevas características en ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Enlace catch opcional
- Array.flat()
- Array.flatMap()
- Array.Sort() revisado
- Revisión de JSON.stringify() revisada
- se permiten separadores en los textos de cadena
- Function.toString() revisado
Advertencia
estas características son relativamente nuevas.
los navegadores más antiguos pueden necesitar código alternativo (Polyfill)
Método de cadena JavaScript trimStart()
ES2019 agregó el método String a JavaScript trimStart()
。
trimStart()
el modo de funcionamiento del método es similar al trim()
similarmente, pero solo elimina los espacios en blanco del principio de la cadena.
Ejemplo
let text1 = " Hello World! "; let text2 = text1.trimStart();
Desde enero de 2020, todos los navegadores modernos soportan JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
en abril de 2018 | en enero de 2020 | en junio de 2018 | en septiembre de 2018 | en mayo de 2018 |
Método de cadena JavaScript trimEnd()
ES2019 agregó a JavaScript trimEnd()
métodos de cadena.
trimEnd()
el modo de funcionamiento del método es similar al trim()
similarmente, pero solo elimina los espacios en blanco del final de la cadena.
Ejemplo
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Desde enero de 2020, todos los navegadores modernos admiten JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
en abril de 2018 | en enero de 2020 | en junio de 2018 | en septiembre de 2018 | en mayo de 2018 |
Método de objeto JavaScript fromEntries()
ES2019 agregó a JavaScript fromEntries()
Métodos de objeto.
fromEntries()
El método crea un objeto a partir de pares de clave/valor iterables.
Ejemplo
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Desde enero de 2020, todos los navegadores modernos admiten JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
en marzo de 2019 | en enero de 2020 | en octubre de 2018 | en marzo de 2019 | en abril de 2019 |
Enlace catch opcional
Desde ES2019, si no es necesario, se puede omitir el parámetro catch:
Ejemplo
antes de 2019:
try { // código catch (err) { // código }
después de 2019:
try { // código catch { // código }
Desde enero de 2020, todos los navegadores modernos admiten la enlace opcional catch:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
en abril de 2018 | en enero de 2020 | en enero de 2018 | en marzo de 2018 | en mayo de 2018 |
Método de array JavaScript flat()
ES2019 agregó a JavaScript flat()
Métodos de array.
flat()
El método crea un nuevo array mediante la expansión del array anidado.
Ejemplo
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Desde enero de 2020, todos los navegadores modernos admiten JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
en septiembre de 2018 | en enero de 2020 | en septiembre de 2018 | en septiembre de 2018 | en septiembre de 2018 |
Método de array JavaScript flatMap()
ES2019 agregó a JavaScript flatMap()
Métodos de array.
flatMap()
El método primero mapea todos los elementos del array, luego crea un nuevo array mediante la expansión del array.
Ejemplo
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Método de array estable sort()
ES2019 Revisiónmétodo sort() de Array.
Antes de 2019, la especificación permitía algoritmos de ordenamiento inestables, como QuickSort.
Después de ES2019, los navegadores deben usar algoritmos de ordenamiento estables:
Al ordenar elementos según un valor, estos deben mantener su posición relativa con otros elementos que tienen el mismo valor.
Ejemplo
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
En el ejemplo anterior, al ordenar por precio, los resultados no se permiten aparecer en otras posiciones relativas de nombres, como se muestra a continuación:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Revisión de JSON.stringify() revisada
ES2019 Revisiónmétodo stringify() de JSON.
Antes de 2019, JSON no podía serializar caracteres codificados con \.
Ejemplo
let text = JSON.stringify("\u26D4");
Antes de ES2019, usar JSON.stringify() en puntos de código UTF-8 (U+D800 a U+DFFF) regresaba caracteres Unicode dañados, como ���.
Después de esta revisión, las cadenas de texto con puntos de código UTF-8 pueden ser convertidas de manera segura usando JSON.stringify() y restauradas a la cadena original usando JSON.parse().
Símbolo de separación
Ahora se permite usar separadores de línea y separadores de párrafo en cadenas de texto (\u2028
y \u2029
)
Antes de 2019, estos se consideraban símbolos de final de línea y causaban errores de excepción:
Ejemplo
// Esto es válido en ES2019: let text = "\u2028";
Atención
Ahora, JavaScript y JSON tienen las mismas reglas.
Antes de ES2019:
text = JSON.parse('"\u2028"') se analizará como ''.
text = '"\u2028"' daráError de sintaxis。
Revisión de Function toString() revisada
ES2019 RevisiónMétodo Function toString().
El método toString() devuelve una cadena que representa el código fuente de la función.
A partir de 2019, toString() debe devolver el código fuente de la función, incluyendo comentarios, espacios y detalles de sintaxis.
Antes de 2019, diferentes navegadores devolvían variantes de función diferentes (por ejemplo, sin comentarios y espacios). A partir de 2019, la función debe devolverse completamente de la manera en que se escribió.
Ejemplo
function myFunction(p1, p2) { return p1 * p2; }