Tin vui – các tính năng mới của ES2020 hiện đã được hoàn thiện! Điều này có nghĩa là chúng ta hiện có một ý tưởng hoàn chỉnh về những thay đổi xảy ra trong ES2020, đặc điểm kỹ thuật mới và được cải tiến của JavaScript. Vậy hãy xem những thay đổi đó là gì nhé.
BigInt, một trong những tính năng được mong đợi nhất trong JavaScript, cuối cùng cũng có mặt. Nó thực sự cho phép các nhà phát triển có biểu diễn số nguyên lớn hơn nhiều trong mã JS của họ để xử lý dữ liệu để xử lý dữ liệu.
Hiện tại, số lượng tối đa bạn có thể lưu trữ dưới dạng số nguyên trong JavaScript là pow(2, 53) - 1
. Nhưng BigInt thực sự cho phép bạn vượt xa điều đó.

Tuy nhiên, bạn cần phải có một n
được thêm vào cuối số, như bạn có thể thấy ở trên. Cái này n
biểu thị rằng đây là một BigInt và phải được xử lý khác bởi công cụ JavaScript (bởi công cụ v8 hoặc bất kỳ công cụ nào nó đang sử dụng).
Cải tiến này không tương thích ngược vì hệ thống số truyền thống là IEEE754 (không thể hỗ trợ các số có kích thước này).
Nhập động trong JavaScript cung cấp cho bạn tùy chọn nhập động các tệp JS dưới dạng các mô-đun trong ứng dụng của bạn một cách tự nhiên. Điều này giống như cách bạn làm với Webpack và Babel vào lúc này.
Tính năng này sẽ giúp bạn gửi mã theo yêu cầu, hay còn gọi là chia tách mã, mà không cần phí webpack hoặc các gói mô-đun khác. Bạn cũng có thể tải mã có điều kiện trong khối if-else nếu muốn.
Điều tốt là bạn thực sự nhập một mô-đun và vì vậy nó không bao giờ làm ô nhiễm không gian tên chung.

Kết hợp Nullish thêm khả năng kiểm tra thực sự nullish
giá trị thay vì falsey
các giá trị. Đâu là sự khác biệt giữa nullish
và falsey
giá trị, bạn có thể yêu cầu?
Trong JavaScript, rất nhiều giá trị được falsey
giống như các chuỗi rỗng, số 0, undefined
, null
, false
, NaN
và như thế.
Tuy nhiên, rất nhiều lần bạn có thể muốn kiểm tra xem một biến có phải là null không – nghĩa là nếu nó là một trong hai undefined
hoặc null
chẳng hạn như khi một biến có một chuỗi trống hoặc thậm chí là một giá trị sai cũng được.
Trong trường hợp đó, bạn sẽ sử dụng toán tử kết hợp nullish mới, ??

Bạn có thể thấy rõ toán tử OR luôn trả về giá trị trung thực như thế nào, trong khi toán tử nullish trả về giá trị không null.
Cú pháp chuỗi tùy chọn cho phép bạn truy cập các thuộc tính đối tượng được lồng sâu mà không cần lo lắng liệu thuộc tính đó có tồn tại hay không. Nếu nó tồn tại, thật tuyệt! Nếu không, undefined
sẽ được trả lại.
Điều này không chỉ hoạt động trên các thuộc tính đối tượng mà còn trên các lệnh gọi hàm và mảng. Siêu tiện lợi! Đây là một ví dụ:

Các Promise.allSettled
phương thức chấp nhận một loạt các Lời hứa và chỉ giải quyết khi tất cả chúng được giải quyết – được giải quyết hoặc bị từ chối.
Điều này không có sẵn trước đây, mặc dù một số triển khai gần giống như race
và all
Đã có sẵn. Điều này mang lại “Chỉ cần chạy tất cả các lời hứa – Tôi không quan tâm đến kết quả” nguyên bản đối với JavaScript.

matchAll
là một phương pháp mới được thêm vào String
nguyên mẫu có liên quan đến Biểu thức chính quy. Điều này trả về một trình vòng lặp trả về tất cả các nhóm phù hợp lần lượt. Chúng ta hãy xem một ví dụ nhanh:

Nếu bạn đã viết một số mã JS đa nền tảng có thể chạy trên Node, trong môi trường trình duyệt và cả bên trong nhân viên web, thì bạn sẽ gặp khó khăn trong việc nắm bắt đối tượng toàn cầu.
Điều này là bởi vì nó là window
cho các trình duyệt, global
cho Nút và self
cho nhân viên web. Nếu có nhiều thời gian chạy hơn, đối tượng chung cũng sẽ khác đối với chúng.
Vì vậy, bạn sẽ phải có triển khai phát hiện thời gian chạy của riêng mình và sau đó sử dụng toàn cầu chính xác – nghĩa là cho đến bây giờ.
ES2020 mang đến cho chúng ta globalThis
luôn đề cập đến đối tượng toàn cầu, bất kể bạn đang thực thi mã của mình ở đâu:

Trong các mô-đun JavaScript, đã có thể sử dụng cú pháp sau:
import * as utils from './utils.mjs'
Tuy nhiên, không đối xứng export
cú pháp tồn tại, cho đến bây giờ:
export * as utils from './utils.mjs'
Điều này tương đương với như sau:
import * as utils from './utils.mjs'
export { utils }
Thông số kỹ thuật ECMA không chỉ định theo thứ tự nào for (x in y)
nên chạy. Mặc dù trước đây các trình duyệt đã tự triển khai một trật tự nhất quán, nhưng điều này đã được chuẩn hóa chính thức trong ES2020.
Các import.meta
đối tượng được tạo bằng cách triển khai ECMAScript, với một null
nguyên mẫu.
Hãy xem xét một mô-đun, module.js
:
<script type="module" src="https://www.freecodecamp.org/news/javascript-new-features-es2020/module.js"></script>
Bạn có thể truy cập thông tin meta về mô-đun bằng cách sử dụng import.meta
vật:
console.log(import.meta); // { url: "file:///home/user/module.js" }
Nó trả về một đối tượng với một url
thuộc tính cho biết URL cơ sở của mô-đun. Đây sẽ là URL mà tập lệnh được lấy từ đó (đối với tập lệnh bên ngoài) hoặc URL cơ sở tài liệu của tài liệu chứa (đối với tập lệnh nội tuyến).
Tôi thích sự nhất quán và tốc độ mà cộng đồng JavaScript đã và đang phát triển. Thật tuyệt vời và thực sự tuyệt vời khi thấy cách JavaScript từ một ngôn ngữ bị la ó, 10 năm trôi qua, trở thành một trong những ngôn ngữ mạnh nhất, linh hoạt nhất và linh hoạt nhất mọi thời đại ngày nay.
Bạn có muốn học JavaScript và các ngôn ngữ lập trình khác theo một cách hoàn toàn mới không? Hãy chuyển sang một nền tảng mới dành cho các nhà phát triển mà tôi đang làm việc để dùng thử ngay hôm nay!
Tính năng yêu thích của bạn về ES2020 là gì? Hãy cho tôi biết về điều đó bằng cách tweet và kết nối với tôi trên Twitter và Instagram!
Đây là một bài đăng trên blog được sáng tác từ video của tôi có cùng chủ đề. Nó sẽ có nghĩa là cả thế giới đối với tôi nếu bạn có thể thể hiện tình yêu với nó!