由什么組成的生成器 是由什么做成的生成器

由什么組成的生成器 是由什么做成的生成器

生成器是由生成器的函數和生成器的迭代器組成,通過構造函數Generator創建的對象,生成器也是一種迭代器,同時又是一個可迭代對象,但是只能對其迭代一次 。這是因為它們并沒有把所有的值存在內存中,而是在運行時生成值 。你通過遍歷來使用它們,要么用一個“for”循環 , 要么將它們傳遞給任意可以進行迭代的函數和結構 。大多數時候生成器是以函數來實現的 。

創建生成器:生成器的創建,必須使用生成器函數(Generator Function) 。

生成器函數的寫法:
function*method(){
}
執行生成器函數內部:生成器函數內部是為了給生成器的每次迭代提供的數據;每次調用生成器的next方法,將導致生成器函數運行到下一個yield關鍵字位置;yield是一個關鍵字 , 該關鍵字只能在生成器函數內部使用,表達“產生”一個迭代數據 。

需要注意的細節:
1、生成器函數可以有返回值,返回值出現在第一次done為true時的value屬性中;
2、調用生成器的next方法時,可以傳遞參數,傳遞的參數會交給yield表達式的返回值;
3、第一次調用next方法時,傳參沒有任何意義;
4、在生成器函數內部,可以調用其他生成器函數,但是要注意加上*號 。
生成器的其他API:
return方法:調用該方法,可以提前結束生成器函數,從而提前讓整個迭代過程結束;
【由什么組成的生成器 是由什么做成的生成器】throw方法:調用該方法,可以在生成器中產生一個錯誤 。

經驗總結擴展閱讀