64㎡年輕小夫妻的家,三居改一居,安放屋主的所有喜好!
2023-01-30
更新時(shí)間:2022-03-31 21:06:08作者:未知
生成器是由生成器的函數(shù)和生成器的迭代器組成,通過(guò)構(gòu)造函數(shù)Generator創(chuàng)建的對(duì)象,生成器也是一種迭代器,同時(shí)又是一個(gè)可迭代對(duì)象,但是只能對(duì)其迭代一次。這是因?yàn)樗鼈儾](méi)有把所有的值存在內(nèi)存中,而是在運(yùn)行時(shí)生成值。你通過(guò)遍歷來(lái)使用它們,要么用一個(gè)“for”循環(huán),要么將它們傳遞給任意可以進(jìn)行迭代的函數(shù)和結(jié)構(gòu)。大多數(shù)時(shí)候生成器是以函數(shù)來(lái)實(shí)現(xiàn)的。
創(chuàng)建生成器:生成器的創(chuàng)建,必須使用生成器函數(shù)(Generator Function)。
生成器函數(shù)的寫法:
function*method(){
}
執(zhí)行生成器函數(shù)內(nèi)部:生成器函數(shù)內(nèi)部是為了給生成器的每次迭代提供的數(shù)據(jù);每次調(diào)用生成器的next方法,將導(dǎo)致生成器函數(shù)運(yùn)行到下一個(gè)yield關(guān)鍵字位置;yield是一個(gè)關(guān)鍵字,該關(guān)鍵字只能在生成器函數(shù)內(nèi)部使用,表達(dá)“產(chǎn)生”一個(gè)迭代數(shù)據(jù)。
需要注意的細(xì)節(jié):
1、生成器函數(shù)可以有返回值,返回值出現(xiàn)在第一次done為true時(shí)的value屬性中;
2、調(diào)用生成器的next方法時(shí),可以傳遞參數(shù),傳遞的參數(shù)會(huì)交給yield表達(dá)式的返回值;
3、第一次調(diào)用next方法時(shí),傳參沒(méi)有任何意義;
4、在生成器函數(shù)內(nèi)部,可以調(diào)用其他生成器函數(shù),但是要注意加上*號(hào)。
生成器的其他API:
return方法:調(diào)用該方法,可以提前結(jié)束生成器函數(shù),從而提前讓整個(gè)迭代過(guò)程結(jié)束;
throw方法:調(diào)用該方法,可以在生成器中產(chǎn)生一個(gè)錯(cuò)誤。