ECMAScript 2019
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, các phiên bản được đặt tên theo năm: ECMAScript 2016, 2017, 2018, 2019,...
Tính năng mới trong ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- 可选的 catch 绑定
- Array.flat()
- Array.flatMap()
- Array.Sort() đã được修订 lại
- 重新修订的 JSON.stringify()
- Các dấu phân cách được phép trong văn bản chuỗi
- Function.toString() đã được修订 lại
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)
JavaScript 字符串方法 trimStart()
ES2019 đã thêm phương pháp String cho JavaScript trimStart()
。
trimStart()
Cách hoạt động của phương pháp tương tự như trim()
Giống như vậy, nhưng chỉ xóa khoảng trống ở đầu chuỗi.
实例
let text1 = " Hello World! "; let text2 = text1.trimStart();
Từ tháng 1 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Tháng 4 năm 2018 | Tháng 1 năm 2020 | Tháng 6 năm 2018 | Tháng 9 năm 2018 | Tháng 5 năm 2018 |
JavaScript 字符串方法 trimEnd()
ES2019 đã thêm vào JavaScript trimEnd()
phương pháp chuỗi.
trimEnd()
Cách hoạt động của phương pháp tương tự như trim()
Giống như vậy, nhưng chỉ xóa khoảng trống ở cuối chuỗi.
实例
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Từ tháng 1 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Tháng 4 năm 2018 | Tháng 1 năm 2020 | Tháng 6 năm 2018 | Tháng 9 năm 2018 | Tháng 5 năm 2018 |
JavaScript 对象方法 fromEntries()
ES2019 đã thêm vào JavaScript fromEntries()
Phương pháp đối tượng.
fromEntries()
Phương pháp tạo ra đối tượng từ các cặp khóa/giá trị có thể lặp lại.
实例
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Từ tháng 1 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Tháng 3 năm 2019 | Tháng 1 năm 2020 | Tháng 10 năm 2018 | Tháng 3 năm 2019 | Tháng 4 năm 2019 |
可选的 catch 绑定
Từ ES2019 trở đi, nếu không cần thiết, có thể bỏ qua tham số catch:
实例
Trước năm 2019:
try { // mã } // mã }
Sau năm 2019:
try { // mã } // mã }
Từ tháng 1 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ optional catch binding:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
Tháng 4 năm 2018 | Tháng 1 năm 2020 | Tháng 1 năm 2018 | Tháng 3 năm 2018 | Tháng 5 năm 2018 |
JavaScript 数组方法 flat()
ES2019 đã thêm vào JavaScript flat()
Phương pháp mảng.
flat()
Phương pháp tạo ra mảng mới bằng cách mở rộng mảng đệm.
实例
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Từ tháng 1 năm 2020, tất cả các trình duyệt hiện đại đều hỗ trợ JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
Tháng 9 năm 2018 | Tháng 1 năm 2020 | Tháng 9 năm 2018 | Tháng 9 năm 2018 | Tháng 9 năm 2018 |
JavaScript 数组方法 flatMap()
ES2019 đã thêm vào JavaScript flatMap()
Phương pháp mảng.
flatMap()
Phương pháp đầu tiên ánh xạ tất cả các phần tử của mảng, sau đó tạo ra mảng mới bằng cách mở rộng mảng.
实例
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
稳定的数组方法 sort()
ES2019 修订của phương thức sort() của Array.
Trước năm 2019, quy định cho phép sử dụng thuật toán sắp xếp không ổn định, ví dụ như QuickSort.
Sau ES2019, trình duyệt phải sử dụng thuật toán sắp xếp ổn định:
Khi sắp xếp các phần tử dựa trên một giá trị, các phần tử đó phải giữ nguyên vị trí tương đối với các phần tử có cùng giá trị.
实例
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
Trong ví dụ trên, khi sắp xếp theo giá, kết quả không được phép xuất hiện ở các vị trí tương đối khác như sau:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
重新修订的 JSON.stringify()
ES2019 修订của phương thức stringify() của JSON.
Trước năm 2019, JSON không thể.stringify() ký tự được mã hóa bằng \.
实例
let text = JSON.stringify("\u26D4");
Trước ES2019, việc sử dụng JSON.stringify() trên điểm mã UTF-8 (U+D800 đến U+DFFF) sẽ trả về các ký tự Unicode bị hỏng, ví dụ: ���。
Sau khi chỉnh sửa này, các chuỗi có điểm mã UTF-8 có thể được chuyển đổi an toàn bằng JSON.stringify() và khôi phục lại chuỗi ban đầu bằng JSON.parse()。
分隔符号
Hiện nay, trong văn bản chuỗi, cho phép sử dụng ký tự phân tách dòng và ký tự phân tách đoạn (\u2028
và \u2029
)。
Trước năm 2019, chúng được coi là ký tự kết thúc dòng và gây ra lỗi ngoại lệ:
实例
// Điều này là hợp lệ trong ES2019: let text = "\u2028";
Lưu ý
Hiện nay, JavaScript và JSON có cùng quy tắc.
Trước ES2019:
text = JSON.parse('"\u2028"') sẽ phân tích thành ''。
text = '"\u2028"' sẽ trả vềLỗi ngữ pháp。
重新修订的 Function toString()
ES2019 修订了 Function toString() 方法。
toString() 方法返回表示函数源代码的字符串。
从 2019 年开始,toString() 必须返回函数的源代码,包括注释、空格和语法细节。
在 2019 年之前,不同的浏览器返回了不同的函数变体(比如没有注释和空格)。从 2019 年开始,该函数应该完全按照编写的方式返回。
实例
function myFunction(p1, p2) { return p1 * p2; }