前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript ES9新特性

JavaScript ES9新特性

原创
作者头像
肥晨
发布2023-06-27 09:45:32
2200
发布2023-06-27 09:45:32
举报
文章被收录于专栏:农民工前端

以下是JavaScript ES9引入的一些新特性。每个特性都有助于简化开发过程、提高代码效率,并提供更强大的功能。 JavaScript ES9(也称为ES2018)

Object spread syntax(对象扩展语法)

代码语言:javascript
复制
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, ...obj1 };
console.log(obj2); // { c: 3, a: 1, b: 2 }

可以使用...语法将一个对象的属性扩展到另一个对象中,并创建一个新对象。

Promise.prototype.finally()

代码语言:javascript
复制
fetch('https://api.example.com/data')
  .then(response => response.json())
  .finally(() => {
    console.log('Fetch request completed.');
  });

finally()方法在Promise被解决或拒绝后,无论如何都会执行。它允许你指定在Promise结束时必须执行的清理逻辑。

Asynchronous Iteration(异步迭代):

代码语言:javascript
复制
async function fetchData() {
  const urls = ['https://api.example.com/data1', 'https://api.example.com/data2'];
  for await (const response of fetchAsync(urls)) {
    console.log(response);
  }
}

async function* fetchAsync(urls) {
  for (const url of urls) {
    yield await fetch(url).then(response => response.json());
  }
}

异步迭代允许在处理异步数据源时使用for-await-of循环,可以便捷地处理一系列异步操作。

Rest/Spread Properties(剩余和扩展属性):

代码语言:javascript
复制
const { x, y, ...rest } = { x: 1, y: 2, z: 3, a: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(rest); // { z: 3, a: 4 }

剩余和扩展属性让你能够从对象中提取特定属性,并将其余的属性放入一个单独的对象中。

RegExp named capture groups(正则表达式命名捕获组)

代码语言:javascript
复制
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = regex.exec('2023-06-25');
console.log(match.groups.year); // 2023
console.log(match.groups.month); // 06
console.log(match.groups.day); // 25

正则表达式现在支持命名捕获组,可以使用<groupName>语法为捕获组命名,并通过.groups属性访问捕获的结果。

Promise.prototype.catch()参数可以省略

代码语言:javascript
复制
fetch('https://api.example.com/data')
  .then(response => response.json())
  .catch(() => {
    console.log('An error occurred.');
  });

在ES9中,可以在catch()方法中省略错误参数,如果不需要访问错误对象,可以直接定义一个空的catch块。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Object spread syntax(对象扩展语法)
  • Promise.prototype.finally()
  • Asynchronous Iteration(异步迭代):
  • Rest/Spread Properties(剩余和扩展属性):
  • RegExp named capture groups(正则表达式命名捕获组)
  • Promise.prototype.catch()参数可以省略
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档