ECMAScript 2017

JavaScript naming conventions started with ES1, ES2, ES3, ES5, and ES6.

However, ECMAScript 2016 and 2017 were 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 asynchronous 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.

instancia

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

Prueba usted mismo

instancia

let str = "5";
str = str.padEnd(4,0);
// El resultado es: 5000

Prueba usted mismo

Internet Explorer no soporta el relleno de cadenas.

Firefox y Safari fueron los primeros navegadores en soportar el relleno de cadenas de JavaScript:

Chrome IE Firefox Safari Opera
Chrome 57 Edge 15 Firefox 48 Safari 10 Opera 44
Marzo de 2017 Abril de 2017 agosto de 2016 septiembre de 2016 Marzo de 2017

entradas de objetos JavaScript

ECMAScript 2017 añadió nuevas Object.entries método.

Object.entries() devuelve un array de pares clave/valor del objeto:

instancia

const person = {
  firstName : "Bill",
  lastName : "Gates",
  age : 50,
  eyeColor : "blue"
};
document.getElementById("demo").innerHTML = Object.entries(person);

Prueba usted mismo

Object.entries() simplifica el uso de objetos en bucles:

instancia

const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruta, valor] of Object.entries(fruits)) {
text += fruta + ": " + valor + "
";
}

Prueba usted mismo

Object.entries() facilita la conversión de un objeto a un mapa:

instancia

const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));

Prueba usted mismo

Chrome y Firefox fueron los primeros en soportar Object.entries del navegador:

Chrome IE Firefox Safari Opera
Chrome 47 Edge 14 Firefox 47 Safari 10.1 Opera 41
junio de 2016 agosto de 2016 junio de 2016 Marzo de 2017 Octubre de 2016

valores de objetos JavaScript

Object.values similares Object.entriespero devuelve un array unidimensional de valores de objeto:

instancia

const person = {
  firstName : "Bill",
  lastName : "Gates",
  age : 50,
  eyeColor : "blue"
};
document.getElementById("demo").innerHTML = Object.values(person);

Prueba usted mismo

Firefox y Chrome fueron los primeros en soportar Object.values del navegador:

Chrome IE Firefox Safari Opera
Chrome 54 Edge 14 Firefox 47 Safari 10.1 Opera 41
Octubre de 2016 agosto de 2016 junio de 2016 Marzo de 2017 Octubre de 2016

Funciones Async de JavaScript

Tiempo de espera

async function myDisplay() {
  let myPromise = new Promise(function(myResolve, myReject) {
    setTimeout(function() { myResolve("I love You !!"); }, 3000);
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();

Prueba usted mismo

Firefox y Chrome son los primeros navegadores en soportar funciones JavaScript asincrónicas:

Chrome IE Firefox Safari Opera
Chrome 55 Edge 15 Firefox 52 Safari 11 Opera 42
Diciembre de 2016 Abril de 2017 Marzo de 2017 Septiembre de 2017 Diciembre de 2016