迭代器Iterator、生成器Generator详解

简介: 迭代器Iterator、生成器Generator详解

在讲Generator(生成器)之前,要先一起了解一下另外一个概念,迭代器

一、迭代器 Iterator

迭代器Iterator 是 ES6 引入的一种新的遍历机制,同时也是一种特殊的对象,它具有一些专门为迭代过程设计的专有接口;


每一个迭代器对象 都有一个 next() 方法,每次调用都会返回一个当前结果对象。


当前结果对象中有两个属性:


       1.value:  当前属性的值


       2.done:  用于判断是否遍历结束,当没有更多可返回的数据时,返回 true


       每调用一次 next() 方法,都会返回下一个可用的值,知道遍历结束。

二、生成器 Generator

生成器是一种返回迭代器的函数,通过 function 关键字后的( * )来表示,函数中会用到新的关键字 yield 。星号可以紧挨着 function 关键字,也可以在中间添加一个空格。

function* generator(){
    const list = [1,2,3];
    for(let i of list){
        yield i
    }
}
let g = generator();
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: true}

三、特性

1. 每当执行完一条 yield 语句后函数就会自动停止运行,直到再次调用 next();


2. yield 关键字只可在生成器(Generator)内部使用,在其他地方使用会导致程序抛出错误;


3. 可以用函数表达式来创建生成器,但是不能使用箭头函数


比较常用的地方是在 stream 数据流处理的时候,会用到迭代器!

20210527153548522.png

20210527153548522.png

20210527153548522.png

20210527153548522.png

相关文章
|
9月前
|
C++
对 Iterator, Generator 的理解?
对 Iterator, Generator 的理解?
|
10月前
|
JavaScript 前端开发
迭代器和生成器
在JavaScript中,迭代器(`Iterator`)是一个对象,用于在可迭代的数据结构中遍历和访问每个元素,而不必暴露该数据结构的内部结构。
|
11月前
|
存储 Python
18.从入门到精通:Python迭代器与生成器 迭代器 创建一个迭代器 StopIteration 生成器
18.从入门到精通:Python迭代器与生成器 迭代器 创建一个迭代器 StopIteration 生成器
|
12月前
|
Python
生成器和迭代器
生成器和迭代器
41 0
|
JavaScript 前端开发
迭代器、生成器
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解JavaScript中的迭代器、生成器
74 0
|
JavaScript 前端开发
|
设计模式 Python 容器
python编程:迭代对象、Iterator迭代器、生成器
python编程:迭代对象、Iterator迭代器、生成器
110 0
python编程:迭代对象、Iterator迭代器、生成器
C#编程-94:迭代器Iterator简单实例
C#编程-94:迭代器Iterator简单实例
C#编程-94:迭代器Iterator简单实例
|
JavaScript
Iterator与Generator
Iterator 概念 Iterator 提供了一种统一的接口机制,为各种不同数据结构提供统一的访问机制。定义 Iterator 就是提供一个具有 next() 方法的对象,每次调用 next() 都会返回一个结果对象,该结果对象有两个属性,value 表示当前的值,done 表示遍历是否结束。