ECMAScript 2020
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 ES2020
- BigInt
- Chuỗi khớpAll()
- Toán tử hợp nhất Nullish (??)
- Toán tử chuỗi tùy chọn (?.)
- Toán tử logic VÀ phép gán (&&=)
- Phép gán logic HOẶC (||=)
- Bài tập hợp nhất Nullish (??=)
- Promise.allSettled()
- Nhập động
Cảnh báo
Những tính năng này là tương đối mới.
Các trình duyệt cũ hơn có thể cần mã thay thế (Polyfill)
JavaScript BigInt
Các biến BigInt
của JavaScript được sử dụng để lưu trữ các giá trị số nguyên lớn quá lớn để được biểu thị bằng Number
JavaScript thông thường.
Số nguyên JavaScript chỉ chính xác tối đa khoảng 15 chữ số.
Ví dụ về số nguyên
let x = 999999999999999;
let y = 9999999999999999; // too big
Hãy tự mình thử »Ví dụ về BigInt
let x = 9999999999999999;
let y = 9999999999999999n;
Hãy tự mình thử » Để tạo BigInt
, hãy thêm n vào cuối số nguyên hoặc gọi BigInt()
:
Ví dụ
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)
Hãy tự mình thử » typeof
JavaScript của BigInt
là "bigint":
BigInt
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2020:
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
May 2018 | Jan 2020 | Jul 2019 | Sep 2020 | Jun 2018 |
Chuỗi JavaScript matchAll()
Trước ES2020, không có phương thức chuỗi nào có thể được sử dụng để tìm kiếm tất cả các lần xuất hiện của một chuỗi trong chuỗi.
Nếu tham số là một biểu thức chính quy, cờ chung (g) phải được đặt, nếu không thì TypeError sẽ được đưa ra.
Nếu bạn muốn tìm kiếm không phân biệt chữ hoa chữ thường, phải đặt cờ không phân biệt chữ hoa chữ thường (i):
Ghi chú
ES2021 đã giới thiệu phương thức chuỗi thay thếAll().
Toán tử hợp nhất Nullish (??)
Các ??
toán tử trả về đối số đầu tiên nếu nó không có giá trị rỗng ( null
hoặc undefined
).
Nếu không nó sẽ trả về thứ hai.
Toán tử nullish được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 3 năm 2020:
Chrome 80 | Edge 80 | Firefox 72 | Safari 13.1 | Opera 67 |
Feb 2020 | Feb 2020 | Jan 2020 | Mar 2020 | Mar 2020 |
Toán tử chuỗi tùy chọn (?.)
Toán tử chuỗi tùy chọn trả về undefined
nếu một đối tượng undefined
hoặc null
(thay vì đưa ra lỗi).
Ví dụ
const car = {type:"Fiat", model:"500", color:"white"};
let name = car?.name;
Hãy tự mình thử » Toán tử ?.=
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 3 năm 2020:
Chrome 80 | Edge 80 | Firefox 74 | Safari 13.1 | Opera 67 |
Feb 2020 | Feb 2020 | Mar 2020 | Mar 2020 | Mar 2020 |
Toán tử &&=
Toán tử logic VÀ gán được sử dụng giữa hai giá trị.
Nếu giá trị đầu tiên là true
thì giá trị thứ hai sẽ được gán.
Toán tử &&=
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2020:
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Aug 2020 | Aug 2020 | Mar 2020 | Sep 2020 | Sep 2020 |
Toán tử ||=
Toán tử gán logic OR được sử dụng giữa hai giá trị.
Nếu giá trị đầu tiên là false
thì giá trị thứ hai sẽ được gán.
Toán tử ||=
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2020:
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Aug 2020 | Aug 2020 | Mar 2020 | Sep 2020 | Sep 2020 |
Toán tử ??=
Toán tử gán hợp nhất Nullish được sử dụng giữa hai giá trị.
Nếu giá trị đầu tiên undefined
hoặc null
thì giá trị thứ hai sẽ được gán.
Toán tử ??=
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 9 năm 2020:
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Aug 2020 | Aug 2020 | Mar 2020 | Sep 2020 | Sep 2020 |
JavaScript Promise.allSettled()
Phương thức Promise.allSettled()
trả về một Promise duy nhất từ danh sách các lời hứa.
Ví dụ
// Create a Promise
const myPromise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, "King");
});
// Create another Promise
const myPromise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "Queen");
});
// Settle All
Promise.allSettled([myPromise1, myPromise2]).then((results) =>
results.forEach((x) => myDisplay(x.status)),
);
Hãy tự mình thử » Promise.allSettled()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 3 năm 2020:
Chrome 76 | Edge 79 | Firefox 71 | Safari 13 | Opera 63 |
May 2019 | Nov 2019 | Mar 2020 | Sep 2019 | Aug 2019 |