📜  ES9-新功能(1)

📅  最后修改于: 2023-12-03 15:30:38.675000             🧑  作者: Mango

ES9-新功能

ECMAScript 2018(也称为 ES9)是 JavaScript 核心语言规范的第九版的标准。该版本引入了一些新功能,使得 JavaScript 变得更加强大和易于使用。

下面是 ES9 的一些新功能:

异步迭代

ES9 允许您在异步迭代上使用 for-await-of。这意味着您可以使用异步生成器来迭代异步对象。

示例:

async function asyncFunc() {
  const asyncIterable = [ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3) ];
  for await (const item of asyncIterable) {
    console.log(item);
  }
}
Promise.finally()

Promise.finally() 方法允许您在 Promise 执行结束后运行一些代码。这里的代码不论 Promise 是成功还是失败都会运行。

示例:

Promise.resolve('dummy').finally(() => {
  console.log('Promise ended!');
});
rest/spread 属性

ES9 引入了对对象 rest 和 spread 属性的支持。现在,您可以使用 ... 语法在对象中收集剩余属性或将对象的属性展开。

示例:

let { x, y, ...rest } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(rest); // { a: 3, b: 4 }

let obj1 = { a: 1, b: 2 };
let obj2 = { c: 3, d: 4 };
let obj3 = {...obj1, ...obj2};
console.log(obj3); // { a: 1, b: 2, c: 3, d: 4 }
RegExp 命名捕获组

ES9 允许为正则表达式命名捕获组。这样可以使您在代码中更清晰地标识捕获组。

示例:

const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = re.exec('2019-09-02');
console.log(match.groups.year); // 2019
console.log(match.groups.month); // 09
console.log(match.groups.day); // 02
其他功能

除了上述功能之外,ES9 还引入了一些其他功能。其中一些功能包括:

  • 强制规定对象属性的顺序
  • 更灵活的 Unicode 正则表达式
  • 对字符串和对象的一些辅助方法(如 trimStart()trimEnd()
总结

ES9 引入了一些新功能,使得 JavaScript 更加强大和易于使用。这些功能包括异步迭代、Promise.finally()、rest/spread 属性、RegExp 命名捕获组等。现在越来越多的浏览器和 Node.js 版本都支持 ES9,因此,您可以放心地在项目中使用这些功能,以使代码更加简洁、可读性更高。