ECMAScript 2020
Số phiên bản JavaScript
Các phiên bản JS cũ được đặt tên bằng số: ES5 (2009) và ES6 (2015).
Từ năm 2016, phiên bản được đặt tên theo năm: ECMAScript 2016, 2017, 2018, 2019,...
Tính năng mới trong ES2020:
- BigInt
- Phương thức chuỗi matchAll()
- Toán tử gán giá trị khi giá trị rỗng (??)
- Toán tử chuỗi tùy chọn (?.)
- Toán tử gán giá trị logic AND (&&=)
- Toán tử gán giá trị logic OR (||=)
- Toán tử gán giá trị khi giá trị rỗng (??=)
- Promise.allSettled()
- Dynamic import
Cảnh báo
Các tính năng này tương đối mới.
Các trình duyệt cũ có thể cần mã thay thế (Polyfill).
BigInt của JavaScript
Biến BigInt của JavaScript được sử dụng để lưu trữ các giá trị số nguyên lớn hơn không thể được biểu diễn bằng số nguyên JavaScript thông thường.
Số nguyên JavaScript có thể chính xác đến 15 chữ số.
thực thể số nguyên
let x = 999999999999999; let y = 9999999999999999; // quá lớn
thực thể BigInt
let x = 9999999999999999; let y = 9999999999999999n;
Để tạo BigInt, hãy đặt n
thêm vào cuối số nguyên hoặc gọi BigInt():
Mô hình
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
Loại JavaScript của BigInt là "bigint":
Mô hình
let x = BigInt(999999999999999); let type = typeof x;
Từ tháng 9 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
Tháng 5 năm 2018 | Tháng 1 năm 2020 | Tháng 7 năm 2019 | Tháng 9 năm 2020 | Tháng 6 năm 2018 |
JavaScript phương thức chuỗi matchAll()
Trước ES2020, không có phương thức chuỗi nào có thể 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.
Mô hình
const iterator = text.matchAll("Cats");
Nếu tham số là biểu thức chính quy, bạn phải thiết lập dấu hiệu toàn cục (g
) thì sẽ ném TypeError.
Mô hình
const iterator = text.matchAll(/Cats/g);
Nếu muốn tìm kiếm không phân biệt chữ hoa chữ thường, bạn phải thiết lập dấu hiệu không phân biệt chữ hoa chữ thường (i
)
Mô hình
const iterator = text.matchAll(/Cats/gi);
Lưu ý:ES2021 Đã giới thiệu phương thức chuỗi replaceAll().
Toán tử gộp giá trị rỗng (Nullish Coalescing Operator) (toán tử ??)
nếu tham số đầu tiên không phải là giá trị rỗng (null
hoặc undefined
thì ??
Toán tử trả về tham số đầu tiên.
nếu không thì trả về giá trị thứ hai.
Mô hình
let name = null; let text = "missing"; let result = name ?? text;
Từ tháng 3 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ toán tử nullish:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 72 | Safari 13.1 | Opera 67 |
Tháng 2 năm 2020 | Tháng 2 năm 2020 | Tháng 1 năm 2020 | Tháng 3 năm 2020 | Tháng 3 năm 2020 |
Toán tử chuỗi tùy chọn (Optional Chaining Operator) (toán tử ?.)
nếu đối tượng là undefined
hoặc null
thìToán tử chuỗi tùy chọnTrả về undefined
(thay vì ném lỗi).
Mô hình
const car = {type:"Fiat", model:"500", color:"white"}; let name = car?.name;
Từ tháng 3 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ ?.=
Toán tử:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 74 | Safari 13.1 | Opera 67 |
Tháng 2 năm 2020 | Tháng 2 năm 2020 | Tháng 3 năm 2020 | Tháng 3 năm 2020 | Tháng 3 năm 2020 |
Toán tử gán AND logic (&&= toán tử)
Toán tử gán AND logicdùng giữa hai giá trị.
nếu giá trị đầu tiên là true
nếu không có giá trị đầu tiên, thì gán giá trị thứ hai.
Ví dụ về phép gán AND logic
let x = 100; x &&= 5;
Từ tháng 9 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ &&=
Toán tử:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Tháng 8 năm 2020 | Tháng 8 năm 2020 | Tháng 3 năm 2020 | Tháng 9 năm 2020 | Tháng 9 năm 2020 |
Toán tử gán OR logic (toán tử ||=)
Toán tử gán OR logicdùng giữa hai giá trị.
nếu giá trị đầu tiên là false
nếu không có giá trị đầu tiên, thì gán giá trị thứ hai.
Ví dụ về phép gán OR logic
let x = 10; x ||= 5;
Từ tháng 9 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ ||=
Toán tử:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Tháng 8 năm 2020 | Tháng 8 năm 2020 | Tháng 3 năm 2020 | Tháng 9 năm 2020 | Tháng 9 năm 2020 |
Toán tử gộp giá trị rỗng gán(??= toán tử)
Toán tử gộp giá trị rỗng gán(Nullish Coalescing Assignment Operator)dùng giữa hai giá trị.
nếu giá trị đầu tiên undefined
hoặc null
nếu không có giá trị đầu tiên, thì gán giá trị thứ hai.
Ví dụ về toán tử gộp giá trị rỗng gán
let x = 10; x ??= 5;
Từ tháng 9 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ ??=
Toán tử:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
Tháng 8 năm 2020 | Tháng 8 năm 2020 | Tháng 3 năm 2020 | Tháng 9 năm 2020 | Tháng 9 năm 2020 |