ECMAScript 2017
Giai đoạn đặt tên JavaScript bắt đầu từ ES1, ES2, ES3, ES5 và ES6.
Nhưng, ECMAScript 2016 và 2017 không được gọi là ES7 và ES8.
Từ năm 2016 trở đi, các phiên bản mới được đặt tên theo năm (ECMAScript 2016/2017/2018).
Các tính năng mới trong ECMAScript 2017
Chương này giới thiệu các tính năng mới của ECMAScript 2017:
- Lấp đầy chuỗi JavaScript
- Object.entries JavaScript
- Object.values JavaScript
- Hàm hàm đệ quy đồng bộ JavaScript
- Memory chia sẻ JavaScript
Lấp đầy chuỗi JavaScript
ECMAScript 2017 đã thêm hai phương thức String:padStart
và padEnd
để hỗ trợ việc lấp đầy đầu và cuối chuỗi.
thực thể
let str = "5"; str = str.padStart(4,0); // Kết quả là: 0005
thực thể
let str = "5"; str = str.padEnd(4,0); // Kết quả là: 5000
Internet Explorer không hỗ trợ kỹ thuật lấp đầy chuỗi.
Firefox và Safari là những trình duyệt đầu tiên hỗ trợ kỹ thuật lấp đầy chuỗi JavaScript:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 57 | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Tháng 3 năm 2017 | Tháng 4 năm 2017 | 2016 năm 8 tháng | 2016 năm 9 tháng | Tháng 3 năm 2017 |
đối tượng mục nhập JavaScript
ECMAScript 2017 đã thêm các tính năng mới cho đối tượng Object.entries
phương thức.
Phương thức Object.entries() trả về một mảng các cặp khóa/giá trị của đối tượng:
thực thể
const person = { firstName : "Bill", lastName : "Gates", age : 50, eyeColor : "blue" }; document.getElementById("demo").innerHTML = Object.entries(person);
Object.entries() làm cho việc lặp qua đối tượng trong vòng lặp trở nên đơn giản:
thực thể
const fruits = {Bananas:300, Oranges:200, Apples:500}; let text = ""; for (let [fruit, value] of Object.entries(fruits)) { text += fruit + ": " + value + " "; }
Object.entries() cũng làm cho việc chuyển đổi đối tượng thành bản đồ trở nên đơn giản:
thực thể
const fruits = {Bananas:300, Oranges:200, Apples:500}; const myMap = new Map(Object.entries(fruits));
Chrome và Firefox là những trình duyệt đầu tiên hỗ trợ Object.entries
của trình duyệt:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
2016 năm 6 tháng | 2016 năm 8 tháng | 2016 năm 6 tháng | Tháng 3 năm 2017 | Tháng 10 năm 2016 |
giá trị đối tượng JavaScript
Object.values
giống Object.entries
mà chỉ trả về một mảng một chiều các giá trị đối tượng:
thực thể
const person = { firstName : "Bill", lastName : "Gates", age : 50, eyeColor : "blue" }; document.getElementById("demo").innerHTML = Object.values(person);
Firefox và Chrome là những trình duyệt đầu tiên hỗ trợ Object.values
của trình duyệt:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Tháng 10 năm 2016 | 2016 năm 8 tháng | 2016 năm 6 tháng | Tháng 3 năm 2017 | Tháng 10 năm 2016 |
Hàm Async JavaScript
Chờ quá hạn
async function myDisplay() { let myPromise = new Promise(function(myResolve, myReject) { setTimeout(function() { myResolve("Tôi yêu bạn !!"); }, 3000); }); document.getElementById("demo").innerHTML = await myPromise; } myDisplay();
Firefox và Chrome là những trình duyệt đầu tiên hỗ trợ hàm JavaScript đồng bộ:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Tháng 12 năm 2016 | Tháng 4 năm 2017 | Tháng 3 năm 2017 | Tháng 9 năm 2017 | Tháng 12 năm 2016 |