Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6迭代器的用例_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

Javascript ES6迭代器的用例

Javascript ES6迭代器的用例,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,使用ES迭代器的好理由是什么?我知道生成器函数(带*的函数)在异步操作中使用了什么。 纯迭代器的其他用例有哪些 请给我一些现实生活中的例子,无论是从node.js还是从浏览器的使用来看都无关紧要。两个主要原因: 语言功能,如for/of、扩展运算符、销毁赋值等。。。可以在支持标准迭代器接口的任何对象上构建 使用集合的程序员可以直接使用迭代器,也可以通过依赖迭代器的语言特性间接使用迭代器,他们可以通过多种方式与集合进行通用接口,而不必知道它是什么类型的集合 作为ES6中语言功能的一个示例,在该语言

使用ES迭代器的好理由是什么?我知道生成器函数(带*的函数)在异步操作中使用了什么。 纯迭代器的其他用例有哪些

请给我一些现实生活中的例子,无论是从node.js还是从浏览器的使用来看都无关紧要。

两个主要原因:

  • 语言功能,如
    for/of
    、扩展运算符、销毁赋值等。。。可以在支持标准迭代器接口的任何对象上构建

  • 使用集合的程序员可以直接使用迭代器,也可以通过依赖迭代器的语言特性间接使用迭代器,他们可以通过多种方式与集合进行通用接口,而不必知道它是什么类型的集合

  • 作为ES6中语言功能的一个示例,在该语言中使用迭代器标准的是,您可以有一个语言结构,例如:

    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-这回答了你的问题吗?