JavaScript 命名约定始于 ES1、ES2、ES3、ES5 和 ES6。
但是,ECMAScript 2016 和 2017 未被称为 ES7 和 ES8。
自 2016 年以来,新版本按年份命名(ECMAScript 2016/2017/2018)。
ECMAScript 2017 的新特性:
ECMAScript 2017 添加了两个 String 方法:padStart 和 padEnd,以支持在字符串的开头和结尾进行填充。
let str = "5";
str = str.padStart(4,0);
// 结果是: 0005

let str = "5";
str = str.padEnd(4,0);
// 结果是: 5000

Internet Explorer 不支持字符串填充。
Firefox 和 Safari 是第一批支持 JavaScript 字符串填充的浏览器:

ECMAScript 2017 向对象添加了新的 Object.entries 方法。
Object.entries() 方法返回对象中键/值对的数组:
const person = {
firstName : "Bill",
lastName : "Gates",
age : 50,
eyeColor : "blue"
};
document.getElementById("demo").innerHTML = Object.entries(person);

Object.entries() 使循环中使用对象变简单了:
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
text += fruit + ": " + value + "
";}

Object.entries() 也使得将对象转换为映射变得简单:
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));

Chrome 和 Firefox 是第一批支持 Object.entries 的浏览器:

Object.values 类似 Object.entries,但返回对象值的单维数组:
const person = {
firstName : "Bill",
lastName : "Gates",
age : 50,
eyeColor : "blue"
};
document.getElementById("demo").innerHTML = Object.values(person);

Firefox 和 Chrome 是第一批支持 Object.values 的浏览器:

【等待超时】
DOCTYPE html>
<html>
<head>
<title>JS异步title>
<meta charset="UTF-8">
head>
<body>
<h1>JavaScript async / awaith1>
<p>请等待 3 秒(3000 毫秒)让此页面发生变化。p>
<h1 id="demo">h1>
<script>
async function myDisplay() {
let myPromise = new Promise(function (myResolve, myReject) {
setTimeout(function () {
myResolve("I love You !!");
}, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
script>
body>
html>
浏览器渲染效果

Firefox 和 Chrome 是第一批支持异步 JavaScript 函数的浏览器:
