ECMAScript 是 JavaScript 的标准化版本。ES9 和 ES10 是 ECMAScript 的最新版本,引入了一些新特性和改进。本篇文章将探讨 ES9 和 ES10 常用的新特性,并提供示例代码。
ES9 新特性
ES9 又称为 ECMAScript 2018,发布于 2018 年 6 月。它引入了以下新特性:
1. 异步迭代器
异步迭代器是一个带有异步 next 方法的迭代器。通过迭代逐个获取元素的方式,异步迭代器可以处理异步序列,使得处理异步数据变得更加容易。
-- -------------------- ---- ------- ----- --------- ------------------ - ----- -- ----- -- ----- -- - ----- -------- ----------------- - --- ----- ---- --- -- ------------------- - ----------------- - - ------------------ -- --- - - -
2. Promise.prototype.finally()
finally() 方法接受一个回调函数作为参数,在 Promise 结束时,无论是 fulfilled 还是 rejected 都会执行该回调函数。
Promise.resolve('done').finally(() => { console.log('finally'); });
3. 扩展的正则表达式功能
ES9 扩展了正则表达式的功能,引入了 s 标志来匹配任何单个字符(包括换行符):
const regex = /foo.bar/s; regex.test('foo\nbar'); // 输出: true
ES10 新特性
ES10 又称为 ECMAScript 2019,发布于 2019 年 6 月。它引入了以下新特性:
1. Array.prototype.flat()
flat() 方法按照指定的深度,将嵌套数组展开成一个新的数组。如果没有指定深度,则默认为 1。
const arr = [1, [2, 3], [[4, 5], 6]]; arr.flat(); // 输出: [1, 2, 3, [4, 5], 6] arr.flat(1); // 输出: [1, 2, 3, [4, 5], 6] arr.flat(2); // 输出: [1, 2, 3, 4, 5, 6]
2. Array.prototype.flatMap()
flatMap() 方法可以将每个数组元素映射到一个新数组,并将最终结果展开为一个新的数组。它相当于先调用 map() 方法,再调用 flat() 方法。
const arr = [1, 2, 3]; arr.flatMap(x => [x * 2]); // 输出: [2, 4, 6]
3. 动态 import()
import() 方法是异步的,可以在运行时动态加载模块。
async function importModule() { const module = await import('./hello.js'); module.sayHello(); } importModule(); // 输出: Hello, world!
4. String.prototype.trimStart() 和 String.prototype.trimEnd()
trimStart() 方法和 trimEnd() 方法分别可以去掉字符串的开头和结尾的空白符。
const str = ' Hello, world! '; str.trimStart(); // 输出: 'Hello, world! ' str.trimEnd(); // 输出: ' Hello, world!'
总结
ES9 和 ES10 引入了一些新特性和改进,包括异步迭代器、Promise.prototype.finally() 方法、扩展的正则表达式功能、Array.prototype.flat() 方法、Array.prototype.flatMap() 方法、动态 import() 方法、String.prototype.trimStart() 和 String.prototype.trimEnd() 方法。学习这些新特性可以提高前端开发的效率,同时也有助于提高代码的质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6472accb968c7c53b004a098