生成器
生成器是 JavaScript 中的一种特殊类型的函数,可以在执行期间暂停和恢复。它们是在 function 关键字后面使用星号 (*) 定义的。生成器使用yield关键字将控制权交还给调用者,同时保留其执行上下文。生成器对于创建迭代器、异步代码和处理数据序列非常有用,而无需立即将所有数据加载到内存中。
例子:在此示例中,我们将看到一个简单的生成器函数,它生成序列中的值。
Javascript
function* GFG() {
yield 10;
yield 20;
yield 30;
}
const generator = GFG();
console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);
输出
10 20 30
迭代器
迭代器是 JavaScript 中具有特殊结构的对象。它们必须具有 next() 方法,该方法返回具有 value 和 done 属性的对象。 value 属性表示序列中的下一个值,done 属性指示是否还有更多值要迭代。迭代器通常用于迭代数组、映射和集合等数据结构。
例子:在此示例中,我们将看到一个迭代器循环遍历数组。
Javascript
const colors = ['red', 'green', 'blue'];
const GFG = colors[Symbol.iterator]();
console.log(GFG.next());
console.log(GFG.next());
console.log(GFG.next());
console.log(GFG.next());
输出
{ value: 'red', done: false } { value: 'green', done: false } { value: 'blue', done: false } { value: undefined, done: true }
生成器和迭代器的区别:
生成器 |
迭代器 |
---|---|
带有星号 (*) 和 Yield 关键字的函数。 |
提供值序列的对象。 |
常用于异步操作。 |
通常用于循环遍历集合。 |
它可以在执行过程中暂停和恢复。 |
按顺序迭代数据元素。 |
显式定义并产生数据。 |
自动迭代现有的数据结构。 |
每个生成器都是一个迭代器。 |
每个迭代器都不是生成器。 |
相关用法
- Javascript Atomics.add( )用法及代码示例
- Javascript Atomics.and()用法及代码示例
- Javascript Atomics.compareExchange( )用法及代码示例
- Javascript Atomics.exchange( )用法及代码示例
- Javascript Atomics.isLockFree( )用法及代码示例
- Javascript Atomics.load( )用法及代码示例
- Javascript Atomics.or( )用法及代码示例
- Javascript Atomics.store( )用法及代码示例
- Javascript Atomics.sub( )用法及代码示例
- Javascript Atomics.xor()用法及代码示例
- Javascript Date.UTC( )用法及代码示例
- Javascript array.flatMap()用法及代码示例
- Javascript Array.of()用法及代码示例
- Javascript array.includes()用法及代码示例
- Javascript Array.isArray()用法及代码示例
- Javascript array.keys()用法及代码示例
- Javascript array.reduceRight()用法及代码示例
- Javascript array.toLocaleString()用法及代码示例
- Javascript array.values()用法及代码示例
- Javascript arrayBuffer.byteLength用法及代码示例
- Javascript ArrayBuffer.isView()用法及代码示例
- Javascript boolean.toString()用法及代码示例
- Javascript boolean.valueOf()用法及代码示例
- Javascript Chart.js用法及代码示例
- Javascript dataView.getFloat32()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Difference between Generators and Iterators in JavaScript。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。