ECMAScript 2017
The JavaScript naming convention started with ES1, ES2, ES3, ES5, and ES6.
However, ECMAScript 2016 and 2017 are not called ES7 and ES8.
Since 2016, new versions have been named by year (ECMAScript 2016/2017/2018).
New Features in ECMAScript 2017
This chapter introduces the new features of ECMAScript 2017:
- JavaScript String Padding
- JavaScript Object.entries
- JavaScript Object.values
- JavaScript Async Functions
- JavaScript Shared Memory
JavaScript String Padding
ECMAScript 2017 added two new String methods:padStart
and padEnd
To support padding at the beginning and end of strings.
instância
let str = "5"; str = str.padStart(4,0); // Result is: 0005
instância
let str = "5"; let str = "5"; str = str.padEnd(4,0);
// O resultado é: 5000
Internet Explorer não suporta o preenchimento de strings.
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Firefox e Safari foram os primeiros navegadores a suportar o preenchimento de strings JavaScript: | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Março de 2017 | Abril de 2017 | Agosto de 2016 | Setembro de 2016 | Março de 2017 |
entradas do objeto JavaScript
ECMAScript 2017 adicionou novos Object.entries
método.
Object.entries() retorna um array de pares de chave/valor do objeto:
instância
const person = { firstName : "Bill", lastName : "Gates", age : 50, eyeColor : "blue" }; document.getElementById("demo").innerHTML = Object.entries(person);
Object.entries() simplifica a iteração sobre objetos:
instância
const fruits = {Bananas:300, Oranges:200, Apples:500}; let text = ""; for (let [fruit, value] of Object.entries(fruits)) { text += fruit + ": " + value + " "; }
Object.entries() também torna fácil converter um objeto em um mapeamento:
instância
const fruits = {Bananas:300, Oranges:200, Apples:500}; const myMap = new Map(Object.entries(fruits));
Chrome e Firefox foram os primeiros a suportar Object.entries
do navegador:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Junho de 2016 | Agosto de 2016 | Junho de 2016 | Março de 2017 | Outubro de 2016 |
valores do objeto JavaScript
Object.values
semelhante Object.entries
mas retorna um array unidimensional de valores do objeto:
instância
const person = { firstName : "Bill", lastName : "Gates", age : 50, eyeColor : "blue" }; document.getElementById("demo").innerHTML = Object.values(person);
Firefox e Chrome foram os primeiros a suportar Object.values
do navegador:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Outubro de 2016 | Agosto de 2016 | Junho de 2016 | Março de 2017 | Outubro de 2016 |
Funções Assíncronas JavaScript
Aguardando Timeout
async function myDisplay() { let myPromise = new Promise(function(myResolve, myReject) { setTimeout(function() { myResolve("I love You !!"); }, 3000); }); document.getElementById("demo").innerHTML = await myPromise; } myDisplay();
Firefox e Chrome são os primeiros navegadores a suportar funções JavaScript assíncronas:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dezembro de 2016 | Abril de 2017 | Março de 2017 | Setembro de 2017 | Dezembro de 2016 |