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:padStartpadEndđể 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ử ngay

thực thể

let str = "5";
str = str.padEnd(4,0);
// Kết quả là: 5000

Thử ngay

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);

Thử ngay

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 + "
";
}

Thử ngay

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));

Thử ngay

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.entriesmà 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);

Thử ngay

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();

Thử ngay

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