生成器
生成器是 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。