ECMAScript 2017

ECMAScript 2017 发布于 2017 年,本章介绍了 ECMAScript 2017 的新特性。

ECMAScript 2017 发布于 2017 年,本章介绍了 ECMAScript 2017 的新特性:

  • 字符串填充 String.padStart()String.padEnd()
  • Object.entries
  • Object.values
  • 异步函数
  • 共享内存

String.padStart() 和 String.padEnd()

ECMAScript 2017 添加了两个 String 方法: padStartpadEnd 支持在字符串的开头和结尾填充。

padStart

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

padEnd

let str = "5";
str = str.padEnd(4, 0);
// result is 5000

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

Chrome Edge Firefox Safari Opera
Chrome 57 Edge 15 Firefox 48 Safari 10 Opera 44
2017-03 2017-04 2016-08 2016-09 2017-03

Object.entries()

ECMAScript 2017 为对象添加了一个新方法 Object.entries(),返回对象中的键值对的数组。

const person = {
  firstName: "John",
  lastName: "Doe",
  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() 转换为 Map

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

const myMap = new Map(Object.entries(fruits));

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

Chrome Edge Firefox Safari Opera
Chrome 47 Edge 14 Firefox 47 Safari 10.1 Opera 41
2016-06 2016-08 2016-06 2017-03 2016-10

Object.values()

Object.values 类似于 Object.entries ,但返回的是有属性值组成的数组。

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

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

Chrome Edge Firefox Safari Opera
Chrome 54 Edge 14 Firefox 47 Safari 10.1 Opera 41
2016-10 2016-08 2016-06 2017-03 2016-10

JavaScript 异步函数

async/await 其实是基于 promises 的语法糖,使异步代码更易于编写和阅读。

使用 async 关键字声明一个异步函数。 await 关键字则会等待一个异步函数执行完成。

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

Chrome Edge Firefox Safari Opera
Chrome 55 Edge 15 Firefox 52 Safari 11 Opera 42
2016-12 2017-04 2017-03 2017-09 2016-12