當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Javascript Generators和Iterators的區別用法及代碼示例


生成器

生成器是 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 關鍵字的函數。

提供值序列的對象。

常用於異步操作。

通常用於循環遍曆集合。

它可以在執行過程中暫停和恢複。

按順序迭代數據元素。

顯式定義並產生數據。

自動迭代現有的數據結構。

每個生成器都是一個迭代器。

每個迭代器都不是生成器。



相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Difference between Generators and Iterators in JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。