成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

ES6中生成器函數(shù)的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了ES6中生成器函數(shù)的示例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、隨縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。概述

其實(shí)前幾章我都不知道怎么寫(xiě),因?yàn)樗麄兛偸巧婕暗揭恍┍容^深的東西,比如可迭代對(duì)象、生成器、迭代器之類(lèi)的東西,等寫(xiě)完這個(gè)系列,再好好整理一下這些東西可能會(huì)好一點(diǎn),現(xiàn)在整理到哪兒就寫(xiě)到哪兒吧

語(yǔ)法
function* name([param[, param[, ... param]]])
{ 
    statements 
}

使用function*作為聲明標(biāo)識(shí)符,表示這是一個(gè)生成器函數(shù)

name是函數(shù)名

param是參數(shù)名,可以255個(gè)

statements是函數(shù)體

特點(diǎn)

生成器函數(shù)在執(zhí)行的時(shí)候是可以暫停的,需要的時(shí)候再繼續(xù)執(zhí)行

生成器函數(shù)返回的是一個(gè)迭代器對(duì)象,不會(huì)立即執(zhí)行

生成器函數(shù)可以使用return,但是return之后將不可再迭代

栗子-無(wú)限id增長(zhǎng)器
function* idMaker(begin=0){
  while(true)
    yield begin++;
}
let maker=idMaker(0)
console.log(maker.next().value) // 0
console.log(maker.next().value) // 1
console.log(maker.next().value) // 2
console.log(maker.next().value) // 3
...

說(shuō)明:

調(diào)用生成器函數(shù)返回的是一個(gè)迭代器,迭代器是一個(gè)滿足迭代器協(xié)議的對(duì)象,簡(jiǎn)單的說(shuō),迭代器對(duì)象有一定有一個(gè)next函數(shù),該函數(shù)返回一個(gè)對(duì)象,我們稱(chēng)之為迭代結(jié)果對(duì)象,該對(duì)象包含以下兩個(gè)屬性:

  1. value:本次迭代的結(jié)果

  2. done:布爾值,如果為true,表示無(wú)法再繼續(xù)迭代,如果為false,表示可以繼續(xù)迭代。

調(diào)用next函數(shù),將會(huì)讓生成器函數(shù)真正的執(zhí)行,一直執(zhí)行,直到遇見(jiàn)yield,并返回迭代結(jié)果對(duì)象

栗子-有限id增長(zhǎng)器
function* idMaker(begin=0){
  while(begin<3)
    yield begin++;
}
let maker=idMaker(0)
console.log(maker.next()) // {value: 0, done: false}
console.log(maker.next()) // {value: 1, done: false}
console.log(maker.next()) // {value: 2, done: false}
console.log(maker.next()) // {value: undefined, done: true}

如果函數(shù)執(zhí)行完成了,那么done就自動(dòng)變成true

next接收參數(shù)
function *createIterator() {
    let first = yield 1;
    let second = yield first + 2; // 4 + 2 
                                  // first =4 是next(4)將參數(shù)賦給上一條的
    yield second + 3;             // 5 + 3
}

let iterator = createIterator();

console.log(iterator.next());    // "{ value: 1, done: false }"
console.log(iterator.next(4));   // "{ value: 6, done: false }"
console.log(iterator.next(5));   // "{ value: 8, done: false }"
console.log(iterator.next());    // "{ value: undefined, done: true }"

這個(gè)解釋起來(lái)挺麻煩,第一次調(diào)用iterator.next(),返回1,代碼停在了yield 1,但是我們將yield 1的結(jié)果保存在了first變量中,其實(shí)這個(gè)操作是沒(méi)有發(fā)生的,當(dāng)我們第二次執(zhí)行iterator.next(4),注意這里傳遞了一個(gè)參數(shù)4,此時(shí)會(huì)把4當(dāng)做yield 1的返回值,賦值給first,所以第二次執(zhí)行可以看做是let first=4的這么一個(gè)執(zhí)行順序。

return
function* yieldAndReturn() {
  yield "1";
  return "2";
  yield "3"; 
}
var gen = yieldAndReturn()
console.log(gen.next()); // { value: "1", done: false }
console.log(gen.next()); // { value: "2", done: true }
console.log(gen.next()); // { value: undefined, done: true }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享ES6中生成器函數(shù)的示例分析內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián)建站,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

本文題目:ES6中生成器函數(shù)的示例分析-創(chuàng)新互聯(lián)
瀏覽路徑:http://jinyejixie.com/article4/csdgoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、商城網(wǎng)站、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、面包屑導(dǎo)航動(dòng)態(tài)網(wǎng)站

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
绍兴市| 开封县| 房产| 井陉县| 青龙| 武宣县| 保靖县| 濮阳市| 台湾省| 罗甸县| 清远市| 柳林县| 麦盖提县| 南漳县| 鸡东县| 天长市| 称多县| 上高县| 左贡县| 仪征市| 金塔县| 崇明县| 汝阳县| 台山市| 台中县| 宣武区| 康平县| 海阳市| 镇江市| 隆尧县| 益阳市| 益阳市| 上杭县| 肃南| 丰镇市| 齐齐哈尔市| 琼海市| 青海省| 株洲县| 余江县| 徐闻县|