ES9(ECMAScript 2018)是 JavaScript 语言的最新版本,其中新增加了许多新的语法和功能。其中值得注意的一项是 Iterator 和 for…of 循环,它们可以大大简化迭代操作。
Iterator
在 ES9 中,Iterator 是一个用于迭代指定数据集合的接口。它只要实现了一个 next
方法,每次调用这个方法会返回当前元素的值和指向下一个元素的指针。当迭代结束的时候,next
方法会返回 { done: true }
。
Iterator 是一个非常灵活的接口,因为它可以用于任何类型的数据集合,包括数组、字符串、Map、Set 等等,只要实现了它们对应的 next
方法即可。
以下是一个实现了 Iterator 接口的数组示例:
-- -------------------- ---- ------- ----- ------- - --- -- --- ----- --------------- - - ------ - -- ------------------ --- ---------- - ----------------- - -- - -- ------------------ -- ------------------ - ------ - ----- ---- -- - ----- ----- - ------------------------------ -------------------- ------ - ------ ----- ----- -- -- ------------------- - ----------------- - ---------- ---------- - -------- ------ ----- - -- --- ------ ----- -- ---------------- - ------------------- -
在上面的示例中,我们定义了一个 myArrayIterator
对象来代表数组的迭代器。这个对象有一个 next
方法用于迭代数组中的每一个元素,并且还实现了 Iterator 接口,这使得我们可以通过 for…of
循环来迭代数组。
for…of 循环
for…of 循环是 ES9 中专门用于迭代任何实现了 Iterator 接口的对象的语句。
以下是一个使用 for…of 循环的数组迭代示例:
const myArray = [1, 2, 3]; for (const value of myArray) { console.log(value); }
使用 for…of 循环迭代数组非常简单,这是因为数组已经实现了 Iterator 接口,我们只需要在 for…of 循环的头部指定一个变量名,这个变量名就代表了数组中的每一个元素。循环会自动在每一次迭代中调用数组的 next
方法来获取下一个元素。
另外,for…of 循环也可以用于迭代字符串、Map、Set 等类型的数据集合。
总结
ES9 中的 Iterator 和 for…of 循环是非常有用的功能,它们可以大大简化迭代操作的过程。我们可以手动实现 Iterator 接口来自定义迭代器,也可以使用已经实现了 Iterator 接口的数据结构进行迭代。使用 for…of 循环可以更加方便地遍历一个数据结构中的所有元素。
下面是一个使用 for…of 循环遍历 Map 的示例代码:
-- -------------------- ---- ------- ----- ----- - --- ----- -------- --------- ------- ---- ---------- ---- --- --- ------ ----- ------ -- ------ - -------------------- ----------- -
在这个示例中,我们使用了数组解构来分别获取 Map 中的键和值,这使得代码变得更加精简和易读。
在实际的开发中,我们应该尽可能地使用 ES9 中的新语法和功能,以更加高效地完成我们的工作。同时,我们还应该善于发现新技术的优势,并且及时应用到自己的项目中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65193c5b95b1f8cacd16f09c