ECMAScript 2019
Số phiên bản JavaScript
Các phiên bản ECMAScript cũ được đặt tên theo số: ES5 và ES6.
Từ 2016 các phiên bản được đặt tên theo năm: ES2016, 2018, 2020...
Các tính năng mới trong ES2019
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Ràng buộc bắt tùy chọn
- Mảng.flat()
- Array.flatMap()
- Đã sửa đổi Array.Sort()
- Đã sửa đổi JSON.stringify()
- Ký hiệu phân cách được phép trong chuỗi chuỗi
- Hàm đã sửa đổi.toString()
Cảnh báo
Những tính năng này là tương đối mới.
Các trình duyệt cũ hơn có thể cần mã thay thế (Polyfill)
Chuỗi JavaScript cắtStart()
ES2019 đã thêm phương thức String trimStart()
vào JavaScript.
Phương thức trimStart()
hoạt động giống như trim()
nhưng chỉ loại bỏ khoảng trắng ở đầu chuỗi.
Chuỗi JavaScript trimStart()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
Cắt chuỗi JavaScriptEnd()
ES2019 đã thêm phương thức String trimEnd()
vào JavaScript.
Phương thức trimEnd()
hoạt động giống như trim()
nhưng chỉ loại bỏ khoảng trắng ở cuối chuỗi.
Chuỗi JavaScript trimEnd()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
Đối tượng JavaScript từEntries()
ES2019 đã thêm phương thức Object fromEntries()
vào JavaScript.
Phương thức fromEntries()
tạo một đối tượng từ các cặp khóa/giá trị có thể lặp lại.
Ví dụ
const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);
Hãy tự mình thử » Đối tượng JavaScript fromEntries()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Mar 2019 | Jan 2020 | Oct 2018 | Mar 2019 | Apr 2019 |
Ràng buộc bắt tùy chọn
Từ ES2019, bạn có thể bỏ qua tham số bắt nếu không cần:.
Ví dụ
Trước năm 2019:
try {
// code
} catch (err) {
// code
}
Sau năm 2019:
try {
// code
} catch {
// code
}
Liên kết bắt tùy chọn được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
Apr 2018 | Jan 2020 | Jan 2018 | Mar 2018 | May 2018 |
Mảng JavaScript phẳng()
ES2019 đã thêm phương thức Array flat()
vào JavaScript.
Phương thức flat()
tạo một mảng mới bằng cách làm phẳng một mảng lồng nhau.
JavaScript Array flat()
được hỗ trợ trong tất cả các trình duyệt hiện đại kể từ tháng 1 năm 2020:
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
Sep 2018 | Jan 2020 | Sep 2018 | Sep 2018 | Sep 2018 |
Mảng JavaScript FlatMap()
ES2019 đã thêm phương thức Array flatMap()
vào JavaScript.
Phương thức flatMap()
trước tiên ánh xạ tất cả các phần tử của một mảng và sau đó tạo một mảng mới bằng cách làm phẳng mảng đó.
Ví dụ
const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);
Hãy tự mình thử »Sắp xếp mảng ổn định()
ES2019 đã sửa đổi phương thức Array sort()
.
Trước năm 2019, thông số kỹ thuật cho phép các thuật toán sắp xếp không ổn định 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ử trên một giá trị, các phần tử phải giữ vị trí tương đối của chúng với các phần tử khác có cùng giá trị.
Ví dụ
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 }
];
Hãy tự mình thử »Trong ví dụ trên, khi sắp xếp theo giá, kết quả không được phép đưa ra những tên ở vị trí tương đối khác như thế này:
X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110
Đã sửa đổi JSON.stringify()
ES2019 đã sửa đổi phương thức JSON stringify()
.
Trước năm 2019, JSON không thể xâu chuỗi ký tự được mã hóa bằng \.
Trước ES2019, việc sử dụng JSON.stringify()
JSON trên các điểm mã UTF-8 (U+D800 đến U+DFFF) đã trả về các ký tự Unicode bị hỏng như ���.
Sau bản sửa đổi này, các chuỗi có điểm mã UTF-8 sẽ chuyển đổi an toàn bằng JSON.stringify()
và quay lại bản gốc bằng cách sử dụng JSON.parse()
.
Ký hiệu phân cách
Dấu phân cách dòng và ký hiệu phân tách đoạn (\u2028 và \u2029) hiện được phép ở dạng chuỗi ký tự.
Trước năm 2019, những lệnh này được coi là dấu kết thúc dòng và dẫn đến các trường hợp ngoại lệ về lỗi:
Ghi chú
Bây giờ, JavaScript và JSON có quy tắc như nhau.
Trước ES2019:
text = JSON.parse('"\u2028"') sẽ phân tích thành ''.
text = '"\u2028"' sẽ báo lỗi cú pháp .
Hàm đã sửa đổi toString()
ES2019 đã sửa đổi phương thức Function toString()
.
Phương thức toString()
trả về một chuỗi biểu thị mã nguồn của hàm.
Từ năm 2019, toString() phải trả về mã nguồn của hàm bao gồm các chú thích, dấu cách và chi tiết cú pháp.
Trước năm 2019, các trình duyệt khác nhau trả về các biến thể khác nhau của hàm (chẳng hạn như không có nhận xét và dấu cách). Từ năm 2019, hàm sẽ được trả về chính xác như được viết.