目录

ECMAScript 2017

JavaScript 版本号

旧的 JS 版本以数字命名:ES5 (2009) 和 ES6 (2015)。

从 2016 年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019,...

ECMAScript 2017 中的新功能

本章介绍 ECMAScript 2017 中的新功能:


JavaScript 字符串填充

ECMAScript 2017 向 JavaScript 添加了两个字符串方法:padStart()padEnd()支持字符串开头和结尾的填充。

示例

let text = "5";
text = text.padStart(4,0);
亲自试一试 »
let text = "5";
text = text.padEnd(4,0);
亲自试一试 »

自 2017 年 4 月起,所有现代浏览器都支持 JavaScript 字符串填充:

Chrome 57 Edge 15 Firefox 48 Safari 10 Opera 44
Mar 2017 Apr 2017 Aug 2016 Sep 2016 Mar 2017

JavaScript 对象条目

ECMAScript 2017 添加了Object.entries()方法到对象。

Object.entries()返回对象中键/值对的数组:

示例

const person = {
  firstName : "John",
  lastName : "Doe",
  age : 50,
  eyeColor : "blue"
};

let text = 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 + "<br>";
}
亲自试一试 »

Object.entries()也使得将对象转换为地图变得简单:

示例

const fruits = {Bananas:300, Oranges:200, Apples:500};

const myMap = new Map(Object.entries(fruits));
亲自试一试 »

Object.entries()自 2017 年 3 月起所有现代浏览器均支持:

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.entries(),但返回对象值的一维数组:

示例

const person = {
  firstName : "John",
  lastName : "Doe",
  age : 50,
  eyeColor : "blue"
};

let text = Object.values(person);
亲自试一试 »

Object.values()自 2017 年 3 月起所有现代浏览器均支持:

Chrome 54 Edge 14 Firefox 47 Safari 10.1 Opera 41
Oct 2016 Aug 2016 Jun 2016 Mar 2017 Oct 2016


JavaScript 异步函数

等待超时

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 和 Chrome 是第一批支持异步 JavaScript 函数的浏览器:

Chrome 55 Edge 15 Firefox 52 Safari 11 Opera 42
Dec 2016 Apr 2017 Mar 2017 Sep 2017 Dec 2016