ES9 是 ECMAScript 的第九个版本,也称为 ES2018,它在 2018 年发布。ES9 包含了一些新的特性和语法规范,这些改进可以帮助开发者更方便地编写代码。这篇文章将介绍其中几个新特性和语言规范。
异步迭代器
在 ES9 中,我们引入了异步迭代器。这个特性允许我们在异步代码中使用迭代器来遍历数据集。在之前的版本中,我们只能使用回调函数或 Promise 来处理异步代码中的数据集,这将导致代码变得冗长和难以维护。
比如,你可以定义一个异步迭代器来遍历一个可异步读取的文件:
-- -------------------- ---- ------- ----- -------- - ----------------------- - ----- ---------- - ----- ------------------------------ ----- -- - -------------------------- ------ ---------- --- --- ----- ------ ---- -- --- - ----- ----- - - --- ----- ------ ---- -- ------------------------- - ------------------ -
上面的代码中,我们使用 for await...of
来遍历 readFileAsync
返回的异步迭代器。它会依次输出文件中的每一行。
Promise.finally()
在 ES9 中,Promise 对象新增了一个 finally()
方法,该方法可以让我们在 Promise 完成之后执行一些操作,不管 Promise 是成功还是失败。
比如,我们可以使用 finally()
方法来关闭一个文件句柄:
-- -------------------- ---- ------- ----- -------- - -- -- - ------ --- ----------------- ------- -- - ------------------- ---- ----- --- -- - -- ----- - ------------ ------- - ------------ --- --- - -------------------- -- - -- ---- ---- ---- ---- -------------- -- - ----------------- ------------- -- - ------------ -- -- - ----------------- --------- --- ---
上面的代码中,我们在 Promise 完成之后使用 finally()
方法来关闭文件句柄。
Rest/Spread 属性
在 ES9 中,我们可以在对象字面量中使用 Rest/Spread 属性。这个特性可以让我们更方便地操作一组属性。
比如,你可以使用 Rest 属性来获取对象中除了某些属性以外的所有属性:
const { id, username, ...rest } = user; console.log(rest); // { firstName: 'John', lastName: 'Doe' }
上面的代码中,我们使用 Rest 属性来获取 user
对象中除了 id
和 username
属性以外的所有属性,存储在 rest
对象中。
同样的,我们也可以使用 Spread 属性来合并多个对象:
const user1 = { id: 1, username: 'johndoe' }; const user2 = { firstName: 'John', lastName: 'Doe' }; const merged = { ...user1, ...user2 }; console.log(merged); // { id: 1, username: 'johndoe', firstName: 'John', lastName: 'Doe' }
上面的代码中,我们使用 Spread 属性来合并 user1
和 user2
对象,存储在 merged
对象中。
Object.fromEntries()
在 ES9 中,我们可以使用 Object.fromEntries()
方法将一个键值对数组转换成对象。
比如,你可以使用这个方法来将 URL 中的查询参数转换为一个对象:
const searchParams = new URLSearchParams('?q=javascript&t=es9'); const paramsObj = Object.fromEntries(searchParams.entries()); console.log(paramsObj); // { q: 'javascript', t: 'es9' }
上面的代码中,我们将 URL 中的查询参数转换为一个对象,存储在 paramsObj
中。
结论
ES9 中引入了一些新的特性和语言规范,这些改进可以让我们更方便地编写 JavaScript 代码。异步迭代器、Promise.finally()、Rest/Spread 属性和 Object.fromEntries() 都是非常有用的特性,值得我们了解和学习。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670b6db1d91dce0dc88a77dc