内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

JavaScript中Generator函數(shù)怎么用-創(chuàng)新互聯(lián)

這篇文章主要介紹了JavaScript中Generator函數(shù)怎么用,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)服務(wù)項目包括杭錦后網(wǎng)站建設(shè)、杭錦后網(wǎng)站制作、杭錦后網(wǎng)頁制作以及杭錦后網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,杭錦后網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到杭錦后省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

語法上

首先可以把它理解成,Generator 函數(shù)是一個狀態(tài)機,封裝了多個內(nèi)部狀態(tài)。執(zhí)行 Generator 函數(shù)會返回一個遍歷器對象,也就是說,Generator 函數(shù)除了狀態(tài)機,還是一個遍歷器對象生成函數(shù)。返回的遍歷器對象,可以依次遍歷 Generator 函數(shù)內(nèi)部的每一個狀態(tài)。

形式上

Generator 函數(shù)是一個普通函數(shù),但是有兩個特征。

一是,function關(guān)鍵字與函數(shù)名之間有一個星號;
二是,函數(shù)體內(nèi)部使用yield表達式,定義不同的內(nèi)部狀態(tài)(yield在英語里的意思就是“產(chǎn)出”)。


調(diào)用上

Generator 函數(shù)的調(diào)用方法與普通函數(shù)一樣,也是在函數(shù)名后面加上一對圓括號。不同的是,調(diào)用 Generator 函數(shù)后,該函數(shù)并不執(zhí)行,返回的也不是函數(shù)運行結(jié)果,而是一個指向內(nèi)部狀態(tài)的指針對象,也就是上一章介紹的遍歷器對象(Iterator Object)。我們必須調(diào)用遍歷器對象的next方法,使得指針移向下一個狀態(tài)。也就是說,每次調(diào)用next方法,內(nèi)部指針就從函數(shù)頭部或上一次停下來的地方開始執(zhí)行,直到遇到下一個yield表達式(或return語句)為止。換言之,Generator 函數(shù)是分段執(zhí)行的,yield表達式是暫停執(zhí)行的標記,而next方法可以恢復(fù)執(zhí)行

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();
hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }

調(diào)用 Generator 函數(shù),返回一個遍歷器對象,代表 Generator 函數(shù)的內(nèi)部指針。以后,每次調(diào)用遍歷器對象的next方法,就會返回一個有著value和done兩個屬性的對象。value屬性表示當(dāng)前的內(nèi)部狀態(tài)的值,是yield表達式后面那個表達式的值;done屬性是一個布爾值,表示是否遍歷結(jié)束。

yield表達式

yield表達式與return語句既有相似之處,也有區(qū)別。相似之處在于,都能返回緊跟在語句后面的那個表達式的值。區(qū)別在于每次遇到y(tǒng)ield,函數(shù)暫停執(zhí)行,下一次再從該位置繼續(xù)向后執(zhí)行,而return語句不具備位置記憶的功能。一個函數(shù)里面,只能執(zhí)行一次(或者說一個)return語句,但是可以執(zhí)行多次(或者說多個)yield表達式。正常函數(shù)只能返回一個值,因為只能執(zhí)行一次return;Generator 函數(shù)可以返回一系列的值,因為可以有任意多個yield。從另一個角度看,也可以說 Generator 生成了一系列的值,這也就是它的名稱的來歷(英語中,generator 這個詞是“生成器”的意思)。

語法注意點:

1、yield表達式只能用在 Generator 函數(shù)里面

2、yield表達式如果用在另一個表達式之中,必須放在圓括號里面

3、yield表達式用作函數(shù)參數(shù)或放在賦值表達式的右邊,可以不加括號。
例如:

function* demo() {
  foo(yield 'a', yield 'b'); // OK
  let input = yield; // OK
}

next 方法的參數(shù)

yield表達式本身沒有返回值(就是說let a=yield ;會返回undefined),或者說總是返回undefined。next方法可以帶一個參數(shù),該參數(shù)就會被當(dāng)作上一個yield表達式的返回值  (注意,是表達式的返回值,例如 let a=yield..........  參數(shù)會是a 的值并且會覆蓋表達式之前的值)。

function* f() {
  for(var i = 0; true; i++) {
    var reset = yield i;
    console.log(reset);
    if(reset) { i = -1; }
  }
}

var g = f();

g.next()

JavaScript中Generator函數(shù)怎么用

由于next方法的參數(shù)表示上一個yield表達式的返回值,所以在第一次使用next方法時,傳遞參數(shù)是無效的。V8 引擎直接忽略第一次使用next方法時的參數(shù),只有從第二次使用next方法開始,參數(shù)才是有效的。從語義上講,第一個next方法用來啟動遍歷器對象,所以不用帶有參數(shù)。

感謝你能夠認真閱讀完這篇文章,希望小編分享JavaScript中Generator函數(shù)怎么用內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

名稱欄目:JavaScript中Generator函數(shù)怎么用-創(chuàng)新互聯(lián)
標題鏈接:http://www.rwnh.cn/article4/dcisie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、軟件開發(fā)網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
上思县| 老河口市| 都昌县| 行唐县| 岑溪市| 昌图县| 台东县| 镇宁| 周口市| 广昌县| 正定县| 蚌埠市| 馆陶县| 京山县| 上思县| 固安县| 孝感市| 兰考县| 扎兰屯市| 奉贤区| 汤阴县| 柏乡县| 安义县| 阳原县| 德令哈市| 宁波市| 循化| 襄汾县| 澄江县| 宽城| 长海县| 鄂托克前旗| 桑日县| 阳泉市| 阿荣旗| 建湖县| 金平| 浑源县| 灵川县| 沙河市| 金坛市|