ECMAScript 2017
JavaScript Version Numbers
Old ECMAScript versions was named by numbers: ES5 and ES6.
From 2016, versions are named by year: ES2016, 2018, 2020 ...
New Features in ECMAScript 2017
This chapter introduces the new features in ECMAScript 2017:
- JavaScript String padding
- JavaScript Object entries()
- JavaScript Object values()
- JavaScript async and await
- Trailing Commas in Functions
- JavaScript Object.getOwnPropertyDescriptors
ES 2017 is fully supported in all modern browsers since September 2017:
Chrome 57 | Edge 15 | Firefox 48 | Safari 11 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2017 | Mar 2017 |
JavaScript String Padding
ECMAScript 2017 added two string methods to JavaScript: padStart()
and padEnd()
to support padding at the beginning and at the end of a string.
Examples
let text = "5";
text = text.padStart(4,0);
Try it Yourself »
let text = "5";
text = text.padEnd(4,0);
Try it Yourself »
JavaScript string padding is supported in all modern browsers since April 2017:
Chrome 57 | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2016 | Mar 2017 |
JavaScript Object Entries
ECMAScript 2017 added the Object.entries()
method to objects.
Object.entries()
returns an array of the key/value pairs in an object:
Example
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.entries(person);
Try it Yourself »
Object.entries()
makes it simple to use objects in loops:
Example
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
text += fruit + ": " + value + "<br>";
}
Try it Yourself »
Object.entries()
also makes it simple to convert objects to maps:
Example
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));
Try it Yourself »
Object.entries()
is supported in all modern browsers since March 2017:
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Jun 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
JavaScript Object Values
Object.values()
is similar to Object.entries()
,
but returns a single dimension array of the object values:
Example
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.values(person);
Try it Yourself »
Object.values()
is supported in all modern browsers since March 2017:
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Oct 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
JavaScript Async Functions
Waiting for a 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();
Async functions are supported in all modern browsers since September 2017:
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dec 2016 | Apr 2017 | Mar 2017 | Sep 2017 | Dec 2016 |
JavaScript Trailing Commas
JavaScript allows trailing commas wherever a comma-separated list of values is accepted.
In Array and Object Literals, Function Calls, Parameters, Imports and Exports.
Example
function myFunc(x,,,) {};
const myArr = [1,2,3,4,,,];
const myObj = {fname: John, age:50,,,};
Trailing commas are supported in all modern browsers since May 2017:
Chrome 58 | Edge 14 | Firefox 52 | Safari 10 | Opera 45 |
Apr 2017 | Aug 2016 | Mar 2017 | Sep 2016 | May 2017 |