Javascript ES6迭代器的用例
使用ES迭代器的好理由是什么?我知道生成器函数(带*的函数)在异步操作中使用了什么。 纯迭代器的其他用例有哪些 请给我一些现实生活中的例子,无论是从node.js还是从浏览器的使用来看都无关紧要。两个主要原因:Javascript ES6迭代器的用例,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,使用ES迭代器的好理由是什么?我知道生成器函数(带*的函数)在异步操作中使用了什么。 纯迭代器的其他用例有哪些 请给我一些现实生活中的例子,无论是从node.js还是从浏览器的使用来看都无关紧要。两个主要原因: 语言功能,如for/of、扩展运算符、销毁赋值等。。。可以在支持标准迭代器接口的任何对象上构建 使用集合的程序员可以直接使用迭代器,也可以通过依赖迭代器的语言特性间接使用迭代器,他们可以通过多种方式与集合进行通用接口,而不必知道它是什么类型的集合 作为ES6中语言功能的一个示例,在该语言
for/of
、扩展运算符、销毁赋值等。。。可以在支持标准迭代器接口的任何对象上构建for (x of someObj) { ... }
而for/of
逻辑只使用someObj
上的迭代器接口。它不必知道它可以迭代的所有对象类型的任何特定信息。因此,您可以对支持标准迭代器的任何类型的对象使用for/of
。例如,您可以将它与数组、映射、集合或您创建的任何支持迭代器接口的自定义对象一起使用
给定对象上的迭代器实现定义了哪些元素是可iterable的,以及它们的呈现顺序
坦率地说,我发现使用依赖于迭代器的语言特性(如for/of
)比直接使用迭代器要常见得多,这样我就可以以标准方式使用集合,而不必知道它是什么类型的集合
在我自己的编码中,我发现能够迭代一个对象而不知道它是什么类型的对象非常方便。这允许我设计一个接口,可以传递一个集合
或数组
,有时甚至可以传递一个映射
,只要我想做的就是迭代集合中的项目,我就不必关心它是哪个,也不必以任何不同的方式编码。如果调用方碰巧有一个集
在手,他们不必将其转换为数组
来调用API-他们只需传递集
。而且,API中的代码不必检查传递给它的类型以适应其行为
迭代器也是惰性的。所以,在开始迭代之前,不需要构建整个集合的临时数组。这可以提高迭代的效率,特别是当集合很大和/或迭代没有完全通过集合时
迭代器可以是无限的。例如,可以有一个表示无限序列的斐波那契迭代器
除for/of之外,其他ES6功能还使用迭代器:
spread syntax
yield*
destructuring assignment
Array.from()
这些特性可以用于支持标准迭代器的任何对象
有关更多详细信息,请参阅以下文章:
它们不是JavaScript独有的。你知道它们在其他语言中是如何使用的吗?我不知道你在寻找什么样的例子,除了“迭代”。如果您曾经使用过ES5
.forEach
或使用过循环,那么您就知道这个大用例。澄清会有很大帮助。回答了你的问题吗?@Slava-这回答了你的问题吗?