ECMAScript 2017
Số phiên bản JavaScript
Các phiên bản ECMAScript cũ được đặt tên theo số: ES5 và ES6.
Từ 2016 các phiên bản được đặt tên theo năm: ES2016, 2018, 2020...
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 trong ECMAScript 2017:
- Phần đệm chuỗi JavaScript
- Mục nhập đối tượng JavaScript()
- Giá trị đối tượng JavaScript()
- JavaScript không đồng bộ và đang chờ
- Dấu phẩy ở cuối hàm
- Đối tượng JavaScript.getOwnPropertyDescriptors
ES 2017 được hỗ trợ đầy đủ trên tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2017:
Chrome 57 | Edge 15 | Firefox 48 | Safari 11 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2017 | Mar 2017 |
Đệm chuỗi JavaScript
ECMAScript 2017 đã thêm hai phương thức chuỗi vào JavaScript: padStart()
và padEnd()
để hỗ trợ đệm ở đầu và cuối chuỗi.
Ví dụ
let text = "5";
text = text.padStart(4,0);
Hãy tự mình thử »
let text = "5";
text = text.padEnd(4,0);
Hãy tự mình thử »Phần đệm chuỗi JavaScript được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 4 năm 2017:
Chrome 57 | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2016 | Mar 2017 |
Mục nhập đối tượng JavaScript
ECMAScript 2017 đã thêm phương thức Object.entries()
vào đối tượng.
Object.entries()
trả về một mảng các cặp khóa/giá trị trong một đối tượng:
Ví dụ
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.entries(person);
Hãy tự mình thử » Object.entries()
giúp việc sử dụng các đối tượng trong vòng lặp trở nên đơn giản:
Ví dụ
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
text += fruit + ": " + value + "<br>";
}
Hãy tự mình thử » Object.entries()
cũng giúp việc chuyển đổi các đối tượng thành bản đồ trở nên đơn giản:
Ví dụ
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));
Hãy tự mình thử » Object.entries()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 3 năm 2017:
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Jun 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
Giá trị đối tượng JavaScript
Object.values()
tương tự như Object.entries()
nhưng trả về một mảng một chiều của các giá trị đối tượng:
Ví dụ
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.values(person);
Hãy tự mình thử » Object.values()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 3 năm 2017:
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Oct 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
Các hàm không đồng bộ của JavaScript
Đang chờ thời gian chờ
async function myDisplay() {
let myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("I love You !!"); }, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
Các chức năng không đồng bộ được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2017:
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dec 2016 | Apr 2017 | Mar 2017 | Sep 2017 | Dec 2016 |
Dấu phẩy ở cuối JavaScript
JavaScript cho phép dấu phẩy ở cuối bất cứ nơi nào danh sách giá trị được phân tách bằng dấu phẩy được chấp nhận.
Trong mảng và đối tượng, lệnh gọi hàm, tham số, nhập và xuất.
Ví dụ
function myFunc(x,,,) {};
const myArr = [1,2,3,4,,,];
const myObj = {fname: John, age:50,,,};
Dấu phẩy ở cuối được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 5 năm 2017:
Chrome 58 | Edge 14 | Firefox 52 | Safari 10 | Opera 45 |
Apr 2017 | Aug 2016 | Mar 2017 | Sep 2016 | May 2017 |