我一直在阅读关于ES6中的迭代器和可迭代对象的文章。我看到了以下示例。
let someArr = [1, 2, 3, 4];
let iteratorVar = someArr[Symbol.iterator]();
console.log(iteratorVar.next().value); // If we log for 5 times, it will print all array elements.
但我的疑虑是我们可以简单地使用for、while等循环来获取数组中的每个元素,就像下面这样。
for (let i = 0; i < someArr.length; i++) {
console.log(someArr[i]);
}
那么,使用可迭代对象和迭代器相比于普通循环结构(如for,while等)有什么优势呢?
我在阅读的文章中没有得到任何澄清。谢谢您的帮助。
for..of
或者...values
吗?它们是基于迭代器的。像Array.prototype.map
这样的东西不是,但是非常有用。我会反过来问,为什么你要使用基于索引的for
循环呢? - Aluan Haddadfor..of
和...values
。我的疑问是为什么我们需要编写let iteratorVar = someArr[Symbol.iterator]();
来循环,而不是直接使用现有的循环结构。 - Sivakumar Tadisettifor...of
处理。而传统的for
循环并不直观。同样的道理,你可以说为什么我们需要for in
或forEach
,它们都有其存在的目的。 - Leo Li