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 方法: padStart
和 padEnd
支持在字符串的开头和结尾填充。
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 |