From 7adfec60b8a55c654e929c6d5d1496ffbf227c98 Mon Sep 17 00:00:00 2001
From: I_am_Vietnam <91591390+ImVietnam@users.noreply.github.com>
Date: Tue, 28 Feb 2023 19:37:44 +0700
Subject: [PATCH 1/5] Update article.md
---
1-js/03-code-quality/06-polyfills/article.md | 88 ++++++++++----------
1 file changed, 44 insertions(+), 44 deletions(-)
diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md
index af38faad2..cc2dd6ae3 100644
--- a/1-js/03-code-quality/06-polyfills/article.md
+++ b/1-js/03-code-quality/06-polyfills/article.md
@@ -1,92 +1,92 @@
-# Polyfills and transpilers
+# Polyfill và bộ dịch mã
-The JavaScript language steadily evolves. New proposals to the language appear regularly, they are analyzed and, if considered worthy, are appended to the list at and then progress to the [specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm).
+Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [đặc điểm kỹ thuật](http:// www.ecma-international.org/publications/standards/Ecma-262.htm).
-Teams behind JavaScript engines have their own ideas about what to implement first. They may decide to implement proposals that are in draft and postpone things that are already in the spec, because they are less interesting or just harder to do.
+Các nhóm đằng sau JavaScript engine có ý tưởng riêng của họ về những gì cần triển khai trước tiên. Họ có thể quyết định thực hiện các đề xuất trong bản nháp và hoãn lại những thứ đã có trong thông số kỹ thuật, bởi vì chúng kém thú vị hơn hoặc khó thực hiện hơn.
-So it's quite common for an engine to implement only the part of the standard.
+Vì vậy, việc một engine chỉ thực hiện một phần của tiêu chuẩn là điều khá phổ biến.
-A good page to see the current state of support for language features is (it's big, we have a lot to study yet).
+Một trang tốt để xem trạng thái hỗ trợ hiện tại cho các tính năng ngôn ngữ là (nó khá lớn, chúng ta còn nhiều điều phải nghiên cứu).
-As programmers, we'd like to use most recent features. The more good stuff - the better!
+Là lập trình viên, chúng ta muốn sử dụng các tính năng mới nhất. Càng nhiều thứ tốt - càng tốt!
-On the other hand, how to make our modern code work on older engines that don't understand recent features yet?
+Mặt khác, làm cách nào để mã hiện đại của chúng ta hoạt động trên các công cụ cũ hơn chưa hiểu các tính năng gần đây?
-There are two tools for that:
+Có hai công cụ cho việc đó:
-1. Transpilers.
-2. Polyfills.
+1. Bộ dịch mã.
+2. Polyfill.
-Here, in this chapter, our purpose is to get the gist of how they work, and their place in web development.
+Ở đây, trong chương này, mục đích của chúng ta là nắm được ý chính về cách chúng hoạt động và vị trí của chúng trong quá trình phát triển web.
-## Transpilers
+## Bộ dịch mã
-A [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) is a special piece of software that can parse ("read and understand") modern code, and rewrite it using older syntax constructs, so that the result would be the same.
+[Bộ dịch mã](https://en.wikipedia.org/wiki/Source-to-source_compiler) là một phần mềm đặc biệt có thể phân tích cú pháp ("đọc và hiểu") mã hiện đại và viết lại mã đó bằng các cấu trúc cú pháp cũ hơn, để kết quả sẽ giống nhau.
-E.g. JavaScript before year 2020 didn't have the "nullish coalescing operator" `??`. So, if a visitor uses an outdated browser, it may fail to understand the code like `height = height ?? 100`.
+Ví dụ. JavaScript trước năm 2020 không có "toán tử kết hợp vô giá trị" `??`. Vì vậy, nếu khách truy cập sử dụng trình duyệt lỗi thời, họ có thể không hiểu mã như `height = height ?? 100`.
-A transpiler would analyze our code and rewrite `height ?? 100` into `(height !== undefined && height !== null) ? height : 100`.
+Trình dịch mã sẽ phân tích mã của chúng ta và viết lại `height ?? 100` thành `(height !== undefined && height !== null) ? height : 100`.
```js
-// before running the transpiler
+// trước khi chạy bộ dịch mã
height = height ?? 100;
-// after running the transpiler
+// sau khi chạy bộ dịch mã
height = (height !== undefined && height !== null) ? height : 100;
```
-Now the rewritten code is suitable for older JavaScript engines.
+Bây giờ mã được viết lại phù hợp với các JavaScript engine cũ hơn.
-Usually, a developer runs the transpiler on their own computer, and then deploys the transpiled code to the server.
+Thông thường, nhà phát triển chạy bộ dịch mã trên máy tính của chính họ, sau đó triển khai mã đã dịch tới máy chủ.
-Speaking of names, [Babel](https://babeljs.io) is one of the most prominent transpilers out there.
+Nhắc đến tên, [Babel](https://babeljs.io) là một trong những trình dịch mã nổi bật nhất hiện có.
-Modern project build systems, such as [webpack](http://webpack.github.io/), provide means to run transpiler automatically on every code change, so it's very easy to integrate into development process.
+Các hệ thống xây dựng dự án hiện đại, chẳng hạn như [webpack](http://webpack.github.io/), cung cấp phương tiện để chạy trình dịch mã tự động trên mỗi thay đổi mã, vì vậy rất dễ tích hợp vào quá trình phát triển.
-## Polyfills
+## Polyfill
-New language features may include not only syntax constructs and operators, but also built-in functions.
+Các tính năng ngôn ngữ mới có thể bao gồm không chỉ cấu trúc cú pháp và toán tử, mà còn cả các hàm tích hợp sẵn.
-For example, `Math.trunc(n)` is a function that "cuts off" the decimal part of a number, e.g `Math.trunc(1.23) = 1`.
+Ví dụ: `Math.trunc(n)` là hàm "cắt bỏ" phần thập phân của một số, ví dụ: `Math.trunc(1.23) = 1`.
-In some (very outdated) JavaScript engines, there's no `Math.trunc`, so such code will fail.
+Trong một số JavaScript engine (rất lỗi thời), không có `Math.trunc`, vì vậy mã như vậy sẽ bị lỗi.
-As we're talking about new functions, not syntax changes, there's no need to transpile anything here. We just need to declare the missing function.
+Vì chúng ta đang nói về các chức năng mới, không phải thay đổi cú pháp, nên không cần phải dịch mã bất kỳ thứ gì ở đây. Chúng ta chỉ cần khai báo hàm còn thiếu.
-A script that updates/adds new functions is called "polyfill". It "fills in" the gap and adds missing implementations.
+Tập lệnh cập nhật/thêm chức năng mới được gọi là "polyfill". Nó "lấp đầy" khoảng trống và bổ sung các triển khai còn thiếu.
-For this particular case, the polyfill for `Math.trunc` is a script that implements it, like this:
+Đối với trường hợp cụ thể này, polyfill cho `Math.trunc` là một tập lệnh triển khai nó, như sau:
```js
-if (!Math.trunc) { // if no such function
- // implement it
+if (!Math.trunc) { // nếu không có hàm như vậy
+ // thực hiện nó
Math.trunc = function(number) {
- // Math.ceil and Math.floor exist even in ancient JavaScript engines
- // they are covered later in the tutorial
+ // Math.ceil và Math.floor tồn tại ngay cả trong các JavaScript engine cổ đại
+ // chúng được đề cập sau trong hướng dẫn
return number < 0 ? Math.ceil(number) : Math.floor(number);
};
}
```
-JavaScript is a highly dynamic language, scripts may add/modify any functions, even including built-in ones.
+JavaScript là một ngôn ngữ rất năng động, các tập lệnh có thể thêm/sửa đổi bất kỳ chức năng nào, kể cả những chức năng được tích hợp sẵn.
-Two interesting libraries of polyfills are:
-- [core js](https://github.com/zloirock/core-js) that supports a lot, allows to include only needed features.
-- [polyfill.io](http://polyfill.io) service that provides a script with polyfills, depending on the features and user's browser.
+Hai thư viện polyfill thú vị là:
+- [Core js](https://github.com/zloirock/core-js) hỗ trợ nhiều, chỉ cho phép đưa vào những tính năng cần thiết.
+- Dịch vụ [polyfill.io](http://polyfill.io) cung cấp tập lệnh có polyfill, tùy thuộc vào tính năng và trình duyệt của người dùng.
-## Summary
+## Bản tóm tắt
-In this chapter we'd like to motivate you to study modern and even "bleeding-edge" language features, even if they aren't yet well-supported by JavaScript engines.
+Trong chương này, chúng tôi muốn khuyến khích bạn nghiên cứu các tính năng ngôn ngữ hiện đại và thậm chí là "tiên tiến", ngay cả khi chúng chưa được các JavaScript engine hỗ trợ tốt.
-Just don't forget to use transpiler (if using modern syntax or operators) and polyfills (to add functions that may be missing). And they'll ensure that the code works.
+Chỉ cần đừng quên sử dụng bộ dịch mã (nếu sử dụng cú pháp hoặc toán tử hiện đại) và polyfill (để thêm các chức năng có thể bị thiếu). Và chúng sẽ đảm bảo rằng mã hoạt động.
-For example, later when you're familiar with JavaScript, you can setup a code build system based on [webpack](http://webpack.github.io/) with [babel-loader](https://github.com/babel/babel-loader) plugin.
+Ví dụ: sau này khi bạn đã quen với JavaScript, bạn có thể thiết lập hệ thống xây dựng mã dựa trên [webpack](http://webpack.github.io/) với [babel-loader](https://github.com /babel/babel-loader).
-Good resources that show the current state of support for various features:
-- - for pure JavaScript.
-- - for browser-related functions.
+Các tài nguyên tốt hiển thị trạng thái hỗ trợ hiện tại cho các tính năng khác nhau:
+- - dành cho JavaScript thuần túy.
+- - cho các chức năng liên quan đến trình duyệt.
-P.S. Google Chrome is usually the most up-to-date with language features, try it if a tutorial demo fails. Most tutorial demos work with any modern browser though.
+Tái bút: Google Chrome thường là phiên bản cập nhật nhất với các tính năng ngôn ngữ, hãy dùng thử nếu bản giới thiệu hướng dẫn không thành công. Tuy nhiên, hầu hết các bản giới thiệu hướng dẫn đều hoạt động với bất kỳ trình duyệt hiện đại nào.
From f2d7f6a607b703535dc8ef82a71b574196766ab9 Mon Sep 17 00:00:00 2001
From: I_am_Vietnam <91591390+ImVietnam@users.noreply.github.com>
Date: Fri, 3 Mar 2023 08:23:25 +0700
Subject: [PATCH 2/5] Update article.md
---
1-js/03-code-quality/06-polyfills/article.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md
index cc2dd6ae3..087a23f8a 100644
--- a/1-js/03-code-quality/06-polyfills/article.md
+++ b/1-js/03-code-quality/06-polyfills/article.md
@@ -1,7 +1,7 @@
# Polyfill và bộ dịch mã
-Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [đặc điểm kỹ thuật](http:// www.ecma-international.org/publications/standards/Ecma-262.htm).
+Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [thông số kỹ thuật](http:// www.ecma-international.org/publications/standards/Ecma-262.htm).
Các nhóm đằng sau JavaScript engine có ý tưởng riêng của họ về những gì cần triển khai trước tiên. Họ có thể quyết định thực hiện các đề xuất trong bản nháp và hoãn lại những thứ đã có trong thông số kỹ thuật, bởi vì chúng kém thú vị hơn hoặc khó thực hiện hơn.
@@ -40,9 +40,9 @@ Bây giờ mã được viết lại phù hợp với các JavaScript engine cũ
Thông thường, nhà phát triển chạy bộ dịch mã trên máy tính của chính họ, sau đó triển khai mã đã dịch tới máy chủ.
-Nhắc đến tên, [Babel](https://babeljs.io) là một trong những trình dịch mã nổi bật nhất hiện có.
+Nhắc đến tên, [Babel](https://babeljs.io) là một trong những bộ dịch mã nổi bật nhất hiện có.
-Các hệ thống xây dựng dự án hiện đại, chẳng hạn như [webpack](http://webpack.github.io/), cung cấp phương tiện để chạy trình dịch mã tự động trên mỗi thay đổi mã, vì vậy rất dễ tích hợp vào quá trình phát triển.
+Các hệ thống xây dựng dự án hiện đại, chẳng hạn như [webpack](http://webpack.github.io/), cung cấp phương tiện để chạy bộ dịch mã tự động trên mỗi thay đổi mã, vì vậy rất dễ tích hợp vào quá trình phát triển.
## Polyfill
@@ -52,9 +52,9 @@ Ví dụ: `Math.trunc(n)` là hàm "cắt bỏ" phần thập phân của một
Trong một số JavaScript engine (rất lỗi thời), không có `Math.trunc`, vì vậy mã như vậy sẽ bị lỗi.
-Vì chúng ta đang nói về các chức năng mới, không phải thay đổi cú pháp, nên không cần phải dịch mã bất kỳ thứ gì ở đây. Chúng ta chỉ cần khai báo hàm còn thiếu.
+Vì chúng ta đang nói về các hàm mới, không phải thay đổi cú pháp, nên không cần phải dịch mã bất kỳ thứ gì ở đây. Chúng ta chỉ cần khai báo hàm còn thiếu.
-Tập lệnh cập nhật/thêm chức năng mới được gọi là "polyfill". Nó "lấp đầy" khoảng trống và bổ sung các triển khai còn thiếu.
+Tập lệnh cập nhật/thêm hàm mới được gọi là "polyfill". Nó "lấp đầy" khoảng trống và bổ sung các triển khai còn thiếu.
Đối với trường hợp cụ thể này, polyfill cho `Math.trunc` là một tập lệnh triển khai nó, như sau:
@@ -69,24 +69,24 @@ if (!Math.trunc) { // nếu không có hàm như vậy
}
```
-JavaScript là một ngôn ngữ rất năng động, các tập lệnh có thể thêm/sửa đổi bất kỳ chức năng nào, kể cả những chức năng được tích hợp sẵn.
+JavaScript là một ngôn ngữ rất năng động, các tập lệnh có thể thêm/sửa đổi bất kỳ hàm nào, kể cả những hàm được tích hợp sẵn.
Hai thư viện polyfill thú vị là:
- [Core js](https://github.com/zloirock/core-js) hỗ trợ nhiều, chỉ cho phép đưa vào những tính năng cần thiết.
- Dịch vụ [polyfill.io](http://polyfill.io) cung cấp tập lệnh có polyfill, tùy thuộc vào tính năng và trình duyệt của người dùng.
-## Bản tóm tắt
+## Tóm tắt
Trong chương này, chúng tôi muốn khuyến khích bạn nghiên cứu các tính năng ngôn ngữ hiện đại và thậm chí là "tiên tiến", ngay cả khi chúng chưa được các JavaScript engine hỗ trợ tốt.
-Chỉ cần đừng quên sử dụng bộ dịch mã (nếu sử dụng cú pháp hoặc toán tử hiện đại) và polyfill (để thêm các chức năng có thể bị thiếu). Và chúng sẽ đảm bảo rằng mã hoạt động.
+Chỉ cần đừng quên sử dụng bộ dịch mã (nếu sử dụng cú pháp hoặc toán tử hiện đại) và polyfill (để thêm các hàm có thể bị thiếu). Và chúng sẽ đảm bảo rằng mã hoạt động.
Ví dụ: sau này khi bạn đã quen với JavaScript, bạn có thể thiết lập hệ thống xây dựng mã dựa trên [webpack](http://webpack.github.io/) với [babel-loader](https://github.com /babel/babel-loader).
Các tài nguyên tốt hiển thị trạng thái hỗ trợ hiện tại cho các tính năng khác nhau:
- - dành cho JavaScript thuần túy.
-- - cho các chức năng liên quan đến trình duyệt.
+- - cho các hàm liên quan đến trình duyệt.
Tái bút: Google Chrome thường là phiên bản cập nhật nhất với các tính năng ngôn ngữ, hãy dùng thử nếu bản giới thiệu hướng dẫn không thành công. Tuy nhiên, hầu hết các bản giới thiệu hướng dẫn đều hoạt động với bất kỳ trình duyệt hiện đại nào.
From f68485a3dfe79375dbb5c1a0548f675f79065461 Mon Sep 17 00:00:00 2001
From: I_am_Vietnam <91591390+ImVietnam@users.noreply.github.com>
Date: Wed, 7 Jun 2023 15:57:57 +0700
Subject: [PATCH 3/5] Update article.md
---
1-js/03-code-quality/06-polyfills/article.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md
index 087a23f8a..7d657bd2e 100644
--- a/1-js/03-code-quality/06-polyfills/article.md
+++ b/1-js/03-code-quality/06-polyfills/article.md
@@ -1,7 +1,7 @@
# Polyfill và bộ dịch mã
-Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [thông số kỹ thuật](http:// www.ecma-international.org/publications/standards/Ecma-262.htm).
+Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [thông số kỹ thuật](http://www.ecma-international.org/publications/standards/Ecma-262.htm).
Các nhóm đằng sau JavaScript engine có ý tưởng riêng của họ về những gì cần triển khai trước tiên. Họ có thể quyết định thực hiện các đề xuất trong bản nháp và hoãn lại những thứ đã có trong thông số kỹ thuật, bởi vì chúng kém thú vị hơn hoặc khó thực hiện hơn.
@@ -82,7 +82,7 @@ Trong chương này, chúng tôi muốn khuyến khích bạn nghiên cứu các
Chỉ cần đừng quên sử dụng bộ dịch mã (nếu sử dụng cú pháp hoặc toán tử hiện đại) và polyfill (để thêm các hàm có thể bị thiếu). Và chúng sẽ đảm bảo rằng mã hoạt động.
-Ví dụ: sau này khi bạn đã quen với JavaScript, bạn có thể thiết lập hệ thống xây dựng mã dựa trên [webpack](http://webpack.github.io/) với [babel-loader](https://github.com /babel/babel-loader).
+Ví dụ: sau này khi bạn đã quen với JavaScript, bạn có thể thiết lập hệ thống xây dựng mã dựa trên [webpack](http://webpack.github.io/) với [babel-loader](https://github.com/babel/babel-loader).
Các tài nguyên tốt hiển thị trạng thái hỗ trợ hiện tại cho các tính năng khác nhau:
- - dành cho JavaScript thuần túy.
From 0940ce639e1a7339df9e1a74794ce69bf58c60c1 Mon Sep 17 00:00:00 2001
From: I_am_Vietnam <91591390+ImVietnam@users.noreply.github.com>
Date: Wed, 7 Jun 2023 21:55:19 +0700
Subject: [PATCH 4/5] Update article.md
---
1-js/03-code-quality/06-polyfills/article.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md
index 7d657bd2e..514b94fd5 100644
--- a/1-js/03-code-quality/06-polyfills/article.md
+++ b/1-js/03-code-quality/06-polyfills/article.md
@@ -1,7 +1,7 @@
# Polyfill và bộ dịch mã
-Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [thông số kỹ thuật](http://www.ecma-international.org/publications/standards/Ecma-262.htm).
+Ngôn ngữ JavaScript phát triển đều đặn. Các đề xuất mới cho ngôn ngữ xuất hiện thường xuyên, chúng được phân tích và, nếu được coi là xứng đáng, sẽ được thêm vào danh sách tại và sau đó chuyển sang [thông số kỹ thuật](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/).
Các nhóm đằng sau JavaScript engine có ý tưởng riêng của họ về những gì cần triển khai trước tiên. Họ có thể quyết định thực hiện các đề xuất trong bản nháp và hoãn lại những thứ đã có trong thông số kỹ thuật, bởi vì chúng kém thú vị hơn hoặc khó thực hiện hơn.
@@ -73,7 +73,7 @@ JavaScript là một ngôn ngữ rất năng động, các tập lệnh có th
Hai thư viện polyfill thú vị là:
- [Core js](https://github.com/zloirock/core-js) hỗ trợ nhiều, chỉ cho phép đưa vào những tính năng cần thiết.
-- Dịch vụ [polyfill.io](http://polyfill.io) cung cấp tập lệnh có polyfill, tùy thuộc vào tính năng và trình duyệt của người dùng.
+- Dịch vụ [polyfill.io](https://polyfill.io) cung cấp tập lệnh có polyfill, tùy thuộc vào tính năng và trình duyệt của người dùng.
## Tóm tắt
From b0594b432e000adc08a06135d6e4659abc14863b Mon Sep 17 00:00:00 2001
From: I_am_Vietnam <91591390+ImVietnam@users.noreply.github.com>
Date: Wed, 7 Jun 2023 22:47:35 +0700
Subject: [PATCH 5/5] Sync with English version
---
1-js/03-code-quality/06-polyfills/article.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md
index 514b94fd5..691e4b1ae 100644
--- a/1-js/03-code-quality/06-polyfills/article.md
+++ b/1-js/03-code-quality/06-polyfills/article.md
@@ -22,7 +22,7 @@ Có hai công cụ cho việc đó:
## Bộ dịch mã
-[Bộ dịch mã](https://en.wikipedia.org/wiki/Source-to-source_compiler) là một phần mềm đặc biệt có thể phân tích cú pháp ("đọc và hiểu") mã hiện đại và viết lại mã đó bằng các cấu trúc cú pháp cũ hơn, để kết quả sẽ giống nhau.
+[Bộ dịch mã](https://en.wikipedia.org/wiki/Source-to-source_compiler) là một phần mềm đặc biệt dịch mã nguồn này sang mã nguồn khác. Nó có thể phân tích cú pháp ("đọc và hiểu") mã hiện đại và viết lại mã đó bằng cách sử dụng các cấu trúc cú pháp cũ hơn để mã này cũng sẽ hoạt động trong các engine lỗi thời.
Ví dụ. JavaScript trước năm 2020 không có "toán tử kết hợp vô giá trị" `??`. Vì vậy, nếu khách truy cập sử dụng trình duyệt lỗi thời, họ có thể không hiểu mã như `height = height ?? 100`.
@@ -42,13 +42,13 @@ Thông thường, nhà phát triển chạy bộ dịch mã trên máy tính c
Nhắc đến tên, [Babel](https://babeljs.io) là một trong những bộ dịch mã nổi bật nhất hiện có.
-Các hệ thống xây dựng dự án hiện đại, chẳng hạn như [webpack](http://webpack.github.io/), cung cấp phương tiện để chạy bộ dịch mã tự động trên mỗi thay đổi mã, vì vậy rất dễ tích hợp vào quá trình phát triển.
+Các hệ thống xây dựng dự án hiện đại, chẳng hạn như [webpack](https://webpack.github.io/), cung cấp phương tiện để chạy bộ dịch mã tự động trên mỗi thay đổi mã, vì vậy rất dễ tích hợp vào quá trình phát triển.
## Polyfill
Các tính năng ngôn ngữ mới có thể bao gồm không chỉ cấu trúc cú pháp và toán tử, mà còn cả các hàm tích hợp sẵn.
-Ví dụ: `Math.trunc(n)` là hàm "cắt bỏ" phần thập phân của một số, ví dụ: `Math.trunc(1.23) = 1`.
+Ví dụ: `Math.trunc(n)` là hàm "cắt bỏ" phần thập phân của một số, ví dụ: `Math.trunc(1.23)` trả về `1`.
Trong một số JavaScript engine (rất lỗi thời), không có `Math.trunc`, vì vậy mã như vậy sẽ bị lỗi.