ECMAScript 2018
A convenção de nomenclatura JavaScript começou com ES1, ES2, ES3, ES5 e ES6.
Mas, ECMAScript 2016 e 2017 não foi chamado de ES7 e ES8.
Desde 2016, as novas versões são nomeadas por ano (ECMAScript 2016/2017/2018).
Novos recursos no ECMAScript 2018
Este capítulo apresenta os novos recursos do ECMAScript 2018:
Iteração assíncrona de JavaScript
O ECMAScript 2018 adicionou iteradores e iteráveis assíncronos.
Com iteráveis assíncronos, podemos usar a palavra- await
chave em for/of
loops.
Exemplo
for await () {}
Firefox e Safari foram os primeiros navegadores com suporte para iteração assíncrona JavaScript:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
Promessa de JavaScript.finally
O ECMAScript 2018 finaliza a implementação completa do objeto Promise com Promise.finally
:
Exemplo
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome e Firefox foram os primeiros navegadores com suporte para Promise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
Propriedades de descanso de objeto JavaScript
ECMAScript 2018 adicionou propriedades de descanso.
Isso nos permite destruir um objeto e coletar as sobras em um novo objeto:
Exemplo
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox e Opera foram os primeiros navegadores com suporte para propriedades de descanso de objeto:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Novos recursos JavaScript RegExp
ECMAScript 2018 adicionou 4 novos recursos RegExp:
- Escapes de propriedade Unicode (\p{...})
- Asserções Lookbehind (?<= ) e (?<! )
- Grupos de captura nomeados
- Sinalizador s (dotAll)
Chrome e Firefox foram os primeiros navegadores com suporte para todos os novos recursos do RegExp:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |