你应该知道的 6 个 ES9 功能:Object Rest 和 Spread、承诺.allSettled() 和更多
ES9 (ECMAScript 2018)是 JavaScript 的最新版本,它引入了一些新的功能和语法,以帮助开发人员更有效地编写代码。在本文中,我们将介绍 ES9 中的 6 个功能,包括 Object Rest 和 Spread、承诺.allSettled(),正则表达式命名捕获组和更多。
- Object Rest 和 Spread
Object Rest 和 Spread 是一个新的语法,在 ES9 中引入。它允许您轻松地从一个对象中获取一些属性,并将其余的属性放入一个新的对象中。例如:
-- -------------------- ---- ------- ----- ------ - - ---------- ------- --------- ------ ---- --- ------ --------------------- -- ----- - ---------- --------- ------- - - ------- ----------------------- -- ------ ---------------------- -- ----- ------------------ -- - ---- --- ------ --------------------- -
在上面的代码中,我们使用 Object Rest 和 Spread 语法从 person
对象中获取 firstName
和 lastName
属性,并将其余的属性放入 rest
对象中。
- 承诺.allSettled()
Promise.allSettled()
是一个新的 Promise 方法,在 ES9 中引入。它接受一个 Promise 数组,并返回一个新的 Promise,该 Promise 将在所有 Promise 完成或拒绝后解决。与 Promise.all()
不同,Promise.allSettled()
不会在任何 Promise 拒绝时拒绝。例如:
-- -------------------- ---- ------- ----- -------- - ------------------------ ---- ----- -------- - --------------------- ---- ----- -------- - ------------------------ ---- ----------------------------- --------- ---------- ------------- -- ---------------------- -- ------- -- - -- - ------- ------------ ------ -------- -- -- -- - ------- ----------- ------- ------ -- -- -- - ------- ------------ ------ -------- -- - -- -
在上面的代码中,我们使用 Promise.allSettled()
方法来等待所有 Promise 完成或拒绝。结果数组包含每个 Promise 的状态和结果或拒绝理由。
- 正则表达式命名捕获组
正则表达式命名捕获组是一个新的语法,在 ES9 中引入。它允许您使用命名捕获组来捕获匹配的子字符串。例如:
const text = 'John Doe <johndoe@example.com>'; const regex = /(?<name>[A-Za-z\s]+) <(?<email>\S+@\S+)>/; const match = text.match(regex); console.log(match.groups.name); // "John Doe" console.log(match.groups.email); // "johndoe@example.com"
在上面的代码中,我们使用正则表达式命名捕获组来捕获 text
变量中的名称和电子邮件地址。
- Array.prototype.flat()
Array.prototype.flat()
是一个新的数组方法,在 ES9 中引入。它允许您将多维数组扁平化为单个数组。例如:
const arr = [1, 2, [3, 4, [5, 6]]]; const flattened = arr.flat(2); console.log(flattened); // [1, 2, 3, 4, 5, 6]
在上面的代码中,我们使用 Array.prototype.flat()
方法将 arr
数组扁平化为单个数组。
- String.prototype.trimStart() 和 String.prototype.trimEnd()
String.prototype.trimStart()
和 String.prototype.trimEnd()
是两个新的字符串方法,在 ES9 中引入。它们允许您从字符串的开头或结尾删除空格。例如:
const text = ' Hello, world! '; console.log(text.trimStart()); // "Hello, world! " console.log(text.trimEnd()); // " Hello, world!"
在上面的代码中,我们使用 String.prototype.trimStart()
和 String.prototype.trimEnd()
方法从 text
字符串的开头和结尾删除空格。
- Async / Await
Async / Await 是一种新的异步编程语法,在 ES9 中引入。它允许您使用类似于同步代码的语法编写异步代码。例如:
async function fetchData() { const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); const data = await response.json(); return data; } fetchData().then(data => console.log(data));
在上面的代码中,我们使用 Async / Await 语法来异步获取数据并打印结果。
总结
在本文中,我们介绍了 ES9 中的 6 个新功能,包括 Object Rest 和 Spread、承诺.allSettled()、正则表达式命名捕获组、Array.prototype.flat()、String.prototype.trimStart() 和 String.prototype.trimEnd()、Async / Await。这些新功能可以帮助开发人员更有效地编写 JavaScript 代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/662b643fd3423812e48f0878