Versões JS antigas são nomeadas por números: ES5 (2009) e ES6 (2015).
A partir de 2016, as versões são nomeadas por ano: ECMAScript 2016, 2017, 2018, 2019, ...
Este capítulo apresenta os novos recursos do ECMAScript 2018:
Iteração Assíncrona
Prometa finalmente
Propriedades de descanso de objeto
Novos recursos RegExp
Memória compartilhada JavaScript
ECMAScript 2018 adicionou iteradores e iteráveis assíncronos.
Com iteráveis assíncronos, podemos usar o await
palavra-chave em loops for/of
.
for await () {}
A iteração assíncrona de JavaScript é suportada em todos os navegadores modernos desde janeiro 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 a implementação completa do objeto Promise com Promise.finally
:
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Promise.finally
é compatível com todos os navegadores modernos desde novembro 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 adicionou propriedades restantes.
Isso nos permite destruir um objeto e coletar as sobras em um novo objeto:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
As propriedades restantes do objeto são suportadas em todos os navegadores modernos desde janeiro 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 adicionou 4 novos recursos RegExp:
Escapes de propriedades Unicode (\p{...})
Asserções Lookbehind (?<= ) e (?
Grupos de Captura Nomeados
Sinalizador s (pontoTodo)
Os novos recursos RegExp são suportados em todos os navegadores modernos desde junho de 2020:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
Em JavaScript você usa a API Web Workers para criar threads.
Threads de trabalho são usados para executar código em segundo plano para que o programa principal possa continuar a execução.
Threads de trabalho são executados simultaneamente com o programa principal. Execução simultânea de diferentes peças de um programa pode economizar tempo.
A memória compartilhada é um recurso que permite que threads (diferentes partes de um programa) acessar e atualizar os mesmos dados na mesma memória.
Em vez de passar dados entre threads, você pode passar um objeto SharedArrayBuffer que aponta para a memória onde os dados são salvos.
Um objeto SharedArrayBuffer representa um buffer de dados binários brutos de comprimento fixo semelhante ao objeto ArrayBuffer.