Iterator 是什么,有什么作用? 
题干 
- 迭代器 Iterator
题解 
迭代器(Iterator) 是 JS 中的一个接口,它提供了一种统一的方式来遍历容器(例如数组、集合、字符串等)中的元素。通过使用 Iterator,它让可以以一种可迭代的方式访问容器中的每个元素,而无需关心容器的具体实现细节。
注意,在 JS 中,对象类型没有 Iterator,大家知道 for...of 迭代的基础是必须存在 Iterator,所以 for...of 无法迭代对象。
Iterator 接口定义了一个 next() 方法,该方法返回一个包含 value 和 done 两个属性的对象。其中,value 表示容器中的下一个元素的值,done 表示是否已经遍历完所有元素,如果为 true,则表示遍历结束,否则表示还有更多元素可供遍历。
Iterator 的作用主要体现在以下几个方面:
- 遍历容器:通过使用 Iterator,我们可以轻松地遍历容器中的元素,无论容器的类型和结构如何。这为我们提供了一种通用的遍历机制,使得代码更具可重用性和灵活性。
- 支持 for...of循环:Iterator是for...of循环的基础,它使得我们可以使用简洁的语法来遍历容器中的元素。for...of循环会自动调用容器对象的Iterator接口,并在每次迭代中获取下一个值,直到遍历完所有元素。
- 内置支持的数据结构:JS 中的一些内置数据结构(例如数组、Set、Map)都实现了 Iterator接口,使得我们可以直接使用for...of循环来遍历它们的元素。这样,我们无需手动编写遍历逻辑,简化了代码的编写和阅读。
- 自定义迭代器:除了内置的数据结构,我们还可以为自定义的对象实现 Iterator接口,使其具备可迭代的特性。通过定义自己的迭代器逻辑,我们可以灵活地控制对象的遍历行为,实现各种定制化的迭代需求。
Iterator 提供了一种通用的遍历机制,使得我们可以以一种统一的方式访问容器中的元素。它简化了遍历代码的编写,提高了代码的可读性和可维护性,并为自定义对象的迭代行为提供了灵活性和定制化的能力。
相关 
for...of、 for...in 和 forEach、map 的区别

