ECMAScript 2018
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 2018
Chương này giới thiệu các tính năng mới trong ECMAScript 2018:
- Lặp lại không đồng bộ
- Hứa Cuối cùng
- Thuộc tính phần còn lại của đối tượng
- Tính năng RegExp mới
- Bộ nhớ chia sẻ JavaScript
Lặp lại không đồng bộ JavaScript
ECMAScript 2018 đã thêm các trình vòng lặp và vòng lặp không đồng bộ.
Với các lần lặp không đồng bộ, chúng ta có thể sử dụng từ khóa await
trong vòng lặp for/of
.
Ví dụ
for await () {}
Lặp lại không đồng bộ JavaScript được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
JavaScript Promise.cuối cùng
ECMAScript 2018 hoàn tất việc triển khai đầy đủ đối tượng Promise với Promise.finally
:
Ví dụ
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Promise.finally
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 11 năm 2018:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
Thuộc tính phần còn lại của đối tượng JavaScript
ECMAScript 2018 đã thêm các thuộc tính còn lại.
Điều này cho phép chúng ta hủy một đối tượng và thu thập phần còn sót lại vào một đối tượng mới:
Ví dụ
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Thuộc tính phần còn lại của đối tượng được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Các tính năng RegExp JavaScript mới
ECMAScript 2018 đã thêm 4 tính năng RegExp mới:
- Thoát thuộc tính Unicode (\p{...})
- Nhìn lại các xác nhận (?<= ) và (?<! )
- Nhóm chụp được đặt tên
- Cờ s (dotAll)
Các tính năng RegExp mới được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 6 năm 2020:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
Chủ đề JavaScript
Trong JavaScript, bạn sử dụng API Web Workers để tạo luồng.
Các luồng công nhân được sử dụng để thực thi mã ở chế độ nền để chương trình chính có thể tiếp tục thực thi.
Các luồng công nhân chạy đồng thời với chương trình chính. Việc thực hiện đồng thời các phần khác nhau của chương trình có thể tiết kiệm thời gian.
Bộ nhớ chia sẻ JavaScript
Bộ nhớ dùng chung là một tính năng cho phép các luồng (các phần khác nhau của chương trình) truy cập và cập nhật cùng một dữ liệu trong cùng một bộ nhớ.
Thay vì truyền dữ liệu giữa các luồng, bạn có thể truyền đối tượng SharedArrayBuffer trỏ đến bộ nhớ nơi lưu dữ liệu.
Bộ đệm mảng chia sẻ
Đối tượng SharedArrayBuffer đại diện cho bộ đệm dữ liệu nhị phân thô có độ dài cố định tương tự như đối tượng ArrayBuffer.