003|JavaScript ES6新特性之生成函數(shù)

生成函數(shù)(generator function)是一種新型函數(shù),是一個分段執(zhí)行函數(shù)白对。它的語法與函數(shù)語法基本一致层释,但以下一些不同點:

  1. function關鍵字被替換成了 function*
  2. 返回返回值是一個生成器(generator)
  3. 通過 yield 關鍵字來分段

例如下面是一個生成函數(shù):

function* sayHi()  // 使用function*來定義生成函數(shù)
{
    console.log("Hello") // 代碼段1
    yield // 使用yield來分段

    console.log("World") // 代碼段2
}

生成器

首先來理解一下生成器(generator)昔脯。生成品遵循iterator協(xié)議捌浩,有next方法放刨。
普通的迭代器用于遍歷對象(或容器),而生成器用于遍歷生成函數(shù)的代碼段尸饺。每調用一次next进统,則下一個代碼段將被調用。

接著上例侵佃,我們來看一下生成器的使用:

var generator = sayHi() // 調用生成函數(shù)返回生成器
generator.next() // 運行代碼段1
generator.next() // 運行代碼段2

第一次調用next()時麻昼,代碼段1運行,第二次調用next()時馋辈,代碼段2運行。

yield 返回值

上述代碼中倍谜,僅僅通過yield來將代碼分段迈螟,實際上yield也可以傳遞value給生成器。
通過一個例子來了解一下:

function* idMaker() {
    yield 1 // 1將作為next的value
    yield 2 // 2將作為next的value
    yield 3 // 3將作為next的value
}

var generator = idMaker()
console.log(generator.next().value) // 輸出 1
console.log(generator.next().value) // 輸出 2
console.log(generator.next().value) // 輸出 3

好了尔崔,完結答毫。

什么是WeakMap?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末季春,一起剝皮案震驚了整個濱河市洗搂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌载弄,老刑警劉巖耘拇,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宇攻,居然都是意外死亡惫叛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門逞刷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘉涌,“玉大人妻熊,你說我怎么就攤上這事÷刈睿” “怎么了扔役?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長警医。 經常有香客問我亿胸,道長,這世上最難降的妖魔是什么法严? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任损敷,我火速辦了婚禮,結果婚禮上深啤,老公的妹妹穿的比我還像新娘拗馒。我一直安慰自己,他們只是感情好溯街,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布诱桂。 她就那樣靜靜地躺著,像睡著了一般呈昔。 火紅的嫁衣襯著肌膚如雪挥等。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天堤尾,我揣著相機與錄音肝劲,去河邊找鬼。 笑死郭宝,一個胖子當著我的面吹牛辞槐,可吹牛的內容都是我干的。 我是一名探鬼主播粘室,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼榄檬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衔统?” 一聲冷哼從身側響起鹿榜,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锦爵,沒想到半個月后舱殿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡棉浸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年怀薛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迷郑。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡枝恋,死狀恐怖创倔,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情焚碌,我是刑警寧澤畦攘,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站十电,受9級特大地震影響知押,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鹃骂,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一台盯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畏线,春花似錦静盅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚣常,卻和暖如春市咽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抵蚊。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工施绎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贞绳。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓粘姜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熔酷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • 在此處先列下本篇文章的主要內容 簡介 next方法的參數(shù) for...of循環(huán) Generator.prototy...
    醉生夢死閱讀 1,444評論 3 8
  • 簡介 基本概念 Generator函數(shù)是ES6提供的一種異步編程解決方案豺裆,語法行為與傳統(tǒng)函數(shù)完全不同拒秘。本章詳細介紹...
    呼呼哥閱讀 1,075評論 0 4
  • 本文作者就是我,簡書的microkof臭猜。如果您覺得本文對您的工作有意義躺酒,產生了不可估量的價值,那么請您不吝打賞我蔑歌,...
    microkof閱讀 23,732評論 16 78
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持羹应,譯者再次奉上一點點福利:阿里云產品券,享受所有官網優(yōu)惠次屠,并抽取幸運大...
    HetfieldJoe閱讀 1,024評論 0 0
  • 昨晚和老婆一起在家里园匹,2個人都不餓雳刺,加上老婆胃不舒服,所有提議煮紅棗粥喝裸违,剛好家里有老婆從公司帶來的腰果掖桦,老婆說一...
    Ai純藍閱讀 345評論 0 1