循环是 JavaScript 中最常用的结构之一,它可以用于遍历数组、对象、字符串等数据类型,并重复执行某些代码块。随着 ECMAScript 的不断更新,也不断加入了一些新的循环特性,本文将详细介绍 ECMAScript 2021 中关于循环的新特性。
for-await-of
for-await-of 是 ES2018 中引入的异步迭代器特性,它可以用于遍历异步迭代器,并异步地执行每个元素的代码块,并且会等待 Promise 对象的解析。但是,for-await-of 只能在异步上下文中使用(如 async 函数),限制了它的灵活性。
在 ECMAScript 2021 中,for-await-of 可以应用于同步迭代器,这意味着您无需在异步上下文中使用它。这样就可以提高代码的可重用性和通用性,且不受异步上下文限制的影响。
以下是一个使用 for-await-of 遍历同步 Map 的示例代码:
// javascriptcn.com 代码示例 const map = new Map([ ['one', 1], ['two', 2], ['three', 3] ]); async function loop() { for await (const [key, value] of map) { console.log(`${key}: ${value}`); } }; loop();
try-catch
try-catch 是 JavaScript 中异常处理的重要结构,它可以捕获代码块中发生的错误,并进行相应的操作。在 ECMAScript 2021 中,try-catch 结构得到了改进,可以在循环中使用,来捕获循环体中的异常。
以下是一个使用 try-catch 捕获循环体中异常的示例代码:
// javascriptcn.com 代码示例 const array = [1, 2, 3, 4, 5]; for (const value of array) { try { if (value === 3) { throw new Error('Value is 3'); } console.log(value); } catch(error) { console.log(error.message); } }
数组 flatMap
JavaScript 的数组都是一维数组,如果数组中包含了其他数组或嵌套数组,我们需要使用 for 循环或递归来展开嵌套数组。ECMAScript 2021 中引入了数组 flatMap 方法,可以展开嵌套数组,简化代码逻辑。
以下是一个使用数组 flatMap 展开嵌套数组的示例代码:
// javascriptcn.com 代码示例 const arr = [1, 2, [3, 4, [5, 6]]]; const newArr = arr.flatMap(item => { if (Array.isArray(item)) { return item; } return item * 2; }); console.log(newArr); // [2, 4, 3, 4, 5, 6, 10, 12]
总结
ECMAScript 2021 中围绕循环的新特性中,for-await-of 可以应用于同步迭代器,使代码更通用;try-catch 可以使用在循环中捕获异常,提高代码安全性;数组 flatMap 方法可以展开嵌套数组,简化代码逻辑。了解和应用这些新特性有助于提高开发效率和代码可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65390d647d4982a6eb2469f3