迭代器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

相关文章
|
6月前
|
JavaScript 前端开发
ES6之迭代器(Iterator)
ES6引入了迭代器的概念,这个特性为JavaScript带来了更强大的迭代和异步编程能力。本文将深入探讨ES6的迭代器,介绍其概念、用法以及在实际开发中的应用。 迭代器(Iterator)是ES6引入的一种新的数据结构,它提供了一种统一的遍历机制,可以用来遍历各种不同类型的数据。迭代器的概念、作用和遍历原理如下所述:
53 0
|
JavaScript 前端开发
迭代器和生成器
在JavaScript中,迭代器(`Iterator`)是一个对象,用于在可迭代的数据结构中遍历和访问每个元素,而不必暴露该数据结构的内部结构。
|
存储 Python
18.从入门到精通:Python迭代器与生成器 迭代器 创建一个迭代器 StopIteration 生成器
18.从入门到精通:Python迭代器与生成器 迭代器 创建一个迭代器 StopIteration 生成器
|
Python
生成器和迭代器
生成器和迭代器
55 0
|
JavaScript 前端开发
ES6--》了解并应用迭代器与生成器
ES6中迭代器与生成器讲解
115 0
ES6--》了解并应用迭代器与生成器
|
设计模式 Python 容器
python编程:迭代对象、Iterator迭代器、生成器
python编程:迭代对象、Iterator迭代器、生成器
142 0
python编程:迭代对象、Iterator迭代器、生成器
C#编程-94:迭代器Iterator简单实例
C#编程-94:迭代器Iterator简单实例
109 0
C#编程-94:迭代器Iterator简单实例