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 padEndTo support padding at the beginning and end of strings.

instância

let str = "5";
str = str.padStart(4,0);
// Result is: 0005

Experimente Você Mesmo

instância

let str = "5";
let str = "5";
str = str.padEnd(4,0);

Experimente Você Mesmo

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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

Experimente Você Mesmo

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