JS 2017

ECMAScript 2017

JavaScript 命名约定始于 ES1、ES2、ES3、ES5 和 ES6。

但是,ECMAScript 2016 和 2017 未被称为 ES7 和 ES8。

自 2016 年以来,新版本按年份命名(ECMAScript 2016/2017/2018)。

ECMAScript 2017 中的新特性

本章介绍 ECMAScript 2017 的新特性:

  • JavaScript 字符串填充
  • JavaScript Object.entries
  • JavaScript Object.values
  • JavaScript 异步函数
  • JavaScript 共享内存

JavaScript 字符串填充

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

实例

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

亲自试一试

实例

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

亲自试一试

Internet Explorer 不支持字符串填充。

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

ChromeIEFirefoxSafariOpera
Chrome 57Edge 15Firefox 48Safari 10Opera 44
2017 年 3 月2017 年 4 月2016 年 8 月2016 年 9 月2017 年 3 月

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 的浏览器:

ChromeIEFirefoxSafariOpera
Chrome 47Edge 14Firefox 47Safari 10.1Opera 41
2016 年 6 月2016 年 8 月2016 年 6 月2017 年 3 月2016 年 10 月

JavaScript 对象值

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 的浏览器:

ChromeIEFirefoxSafariOpera
Chrome 54Edge 14Firefox 47Safari 10.1Opera 41
2016 年 10 月2016 年 8 月2016 年 6 月2017 年 3 月2016 年 10 月

JavaScript Async 函数

等待超时

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 函数的浏览器:

ChromeIEFirefoxSafariOpera
Chrome 55Edge 15Firefox 52Safari 11Opera 42
2016 年 12 月2017 年 4 月2017 年 3 月2017 年 9 月2016 年 12 月