Las versiones antiguas de JS se nombran con números: ES5 (2009) y ES6 (2015).
A partir de 2016, las versiones se nombran por año: ECMAScript 2016, 2017, 2018, 2019,...
Este capítulo presenta las nuevas características de ECMAScript 2018:
Iteración asincrónica
Promesa finalmente
Propiedades del resto del objeto
Nuevas funciones de RegExp
Memoria compartida de JavaScript
ECMAScript 2018 agregó iteradores e iterables asincrónicos.
Con iterables asíncronos, podemos usar await
palabra clave en los bucles for/of
.
for await () {}
La iteración asincrónica de JavaScript es compatible con todos los navegadores modernos desde enero de 2020:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
ECMAScript 2018 finaliza la implementación completa del objeto Promise con Promise.finally
:
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Promise.finally
es compatible con todos los navegadores modernos desde noviembre de 2018:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
ECMAScript 2018 agregó propiedades de descanso.
Esto nos permite destruir un objeto y recoger los restos en un nuevo objeto:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Las propiedades de reposo de objetos son compatibles con todos los navegadores modernos desde enero de 2020:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
ECMAScript 2018 agregó 4 nuevas funciones RegExp:
Escapes de propiedad Unicode (\p{...})
Afirmaciones de búsqueda atrás (?<= ) y (?
Grupos de captura con nombre
Bandera s (puntotodo)
Las nuevas funciones RegExp son compatibles con todos los navegadores modernos desde junio de 2020:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
En JavaScript, utiliza la API de Web Workers para crear hilos.
Los subprocesos de trabajo se utilizan para ejecutar código en segundo plano para que el programa principal pueda continuar con la ejecución.
Los subprocesos de trabajo se ejecutan simultáneamente con el programa principal. Ejecución simultánea de diferentes partes. de un programa puede ahorrarle tiempo.
La memoria compartida es una característica que permite que los subprocesos (diferentes partes de un programa) acceder y actualizar los mismos datos en la misma memoria.
En lugar de pasar datos entre subprocesos, puede pasar un objeto SharedArrayBuffer que apunta a la memoria donde se guardan los datos.
Un objeto SharedArrayBuffer representa un búfer de datos binarios sin procesar de longitud fija similar al objeto ArrayBuffer.