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:

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();

Prueba personalmente

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();

Prueba personalmente

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);

Prueba personalmente

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();

Prueba personalmente

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);

Prueba personalmente

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 }
];

Prueba personalmente

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");

Prueba personalmente

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";

Prueba personalmente

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;
}

Prueba personalmente