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:

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ử ngay

thực thể BigInt

let x = 9999999999999999;
let y = 9999999999999999n;

Thử ngay

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

Thử ngay

Loại JavaScript của BigInt là "bigint":

Mô hình

let x = BigInt(999999999999999);
let type = typeof x;

Thử ngay

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

Thử ngay

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

Thử ngay

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

Thử ngay

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 undefinedthì ?? 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;

Thử ngay

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 nullthì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;

Thử ngay

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à truenế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;

Thử ngay

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à falsenế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;

Thử ngay

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 nullnế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;

Thử ngay

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