Một số điểm mới của ECMAScript 2019
Bài đăng này đã không được cập nhật trong 5 năm
ECMAScript (ES) là ngôn ngữ kịch bản được tạo ra nhằm chuẩn hóa ngôn ngữ Javascript và được phát triển hàng năm với các tính năng mới, hẳn chúng ta đều khá quen thuộc với phiên bản ES6 - phiên bản nổi tiếng với hàng loạt các thuộc tính như arrow function, Promise... trong bài viết này mình sẽ giới thiệu một số tính năng sẽ được thêm vào trong phiên bản ECMA Script 2019.
Array.flat()
Array.flat() sẽ trả về giá trị là một mảng mới với bất kỳ các array con được "làm phẳng", hiểu đơn giản là nếu ta có array chứa array, Array.flat() sẽ làm phẳng cấu trúc trên thành một array, ví dụ:
let arr = [1, 2, 3, [4, 5, 6]];
arr.flat(); // [1, 2, 3, 4, 5, 6]
nếu có nhiều hơn 2 lớp array
let arr = [1, 2, [3, 4, [5, 6]]]
arr.flat(); // [1, 2, 3, 4, Array(2)]
arr.flat().flat(); // [1, 2, 3, 4, 5, 6]
arr.flat(2); // [1, 2, 3, 4, 5, 6]
đối với trường hợp cần "làm phẳng" toàn bộ array có nhiều lớp Array.flat(), ta có thể thêm vào tham số đặc biệt như sau:
let arr = [1, 2, [3, 4, [5, 6, [7, 8]]]]
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8]
Array.flatMap()
flatMap() khá tương tự với thuộc tính map của phiên bản ES6, đầu tiên sẽ loop mỗi phần tử của array sau đó "làm phẳng" kết quả nhận được thành một array duy nhất, có thể hiểu flatMap() là một kết hợp của map vào flatMap(). Dưới đây là ví dụ
let arr = [1, 2, 3];
arr.map(n => [n, n * n]);
// [Array(2), Array(2), Array(2)]
// 0: (2)[1, 1]
// 1: (2)[2, 4]
// 2: (2)[3, 9]
arr.flatMap(n => [n, n * n]);
// [1, 1, 2, 4, 3, 9]
String.trimStart(), String.trimEnd()
String.trimStart() và String.trimEnd() cho phép ta sử dụng hàm quen thuộc trim với thêm lựa chọn chỉ ở một phía mà thôi.
let str = ' string '
console.log(str.trimStart())
// 'string '
let str = ' string '
console.log(str.trimEnd())
// ' string'
Optional Catch Binding
Đây là thuộc tính cho phép chúng ta sử dụng try/catch mà không cần có tham số error trong khối catch.
try/catch hiện tại
try {
// code
}
catch (err) {
// handle error
}
try/catch phiên bản ES2019
try {
// code
}
catch {
// handle error
}
Object.fromEntries()
thuộc tính này sẽ tạo ra một object hoặc biến đổi các cặp key-value thành một object, và chỉ cho phép kiểu dữ liệu mang tính lặp đi lặp lại
let entries = new Map([["firstName", "Minh"], ["age", 30]]);
console.log(Object.fromEntries(entries));
// { firstName: 'Minh', age: 30 }
Symbol.description
đây là một thuộc tính theo dạng read-only trả về một string mô tả đối tượng Symbol.
ví dụ
let newSymbol = 'A Symbol'
let symbolObject = Symbol(newSymbol)
console.log(symbolObject) // Symbol(newSymbol)
console.log(symbolObject.description); // "A Symbol"
tham khảo
All rights reserved