麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

JavaScript中 ES6 generator數(shù)據(jù)類型詳解

2019-11-20 09:15:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. generator簡(jiǎn)介

generator 是ES6引入的新的數(shù)據(jù)類型, 看上去像一個(gè)函數(shù),除了使用return返回, yield可以返回多次。

generator 由function* 定義, (注意*號(hào)),

2. 示例

函數(shù)無(wú)法保存狀態(tài), 有時(shí)需要全局變量來(lái)保存數(shù)字;

2.1

'use strict';function next_id(){var id = 1;while(id<100){yield id;id++;}return id;}// 測(cè)試:varx,pass = true,g = next_id();for (x = 1; x < 100; x ++) {if (g.next().value !== x) {pass = false;alert('測(cè)試失敗!');break;}}if (pass) {alert('測(cè)試通過(guò)!');} 

2.2 一個(gè)無(wú)限循環(huán)的迭代器

function* idMaker(){var index = 0;while(true)yield index++;}var gen = idMaker(); // "Generator { }"console.log(gen.next().value); // 0console.log(gen.next().value); // 1console.log(gen.next().value); // 2 

2.3Generator.prototype.next()

當(dāng)?shù)Y(jié)束時(shí), Generator.next().done ===true, 結(jié)束之前 ===false

function* gen() { yield 1;yield 2;yield 3;}var g = gen(); // "Generator { }"g.next(); // "Object { value: 1, done: false }"g.next(); // "Object { value: 2, done: false }"g.next(); // "Object { value: 3, done: false }"g.next(); // "Object { value: undefined, done: true }" 

2.4 Generator.prototype.return();

return方法 返回給定的參數(shù)值,并結(jié)束迭代器

example

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

注意 如果 done的值是true了, 再調(diào)用return,返回的值也是undefined

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

2.5 Generator.prototype.throw()

thorw()方法, 通過(guò)拋出一個(gè)異常到迭代器中,來(lái)重新獲得迭代器的執(zhí)行;

返回 帶有 value和done兩個(gè)屬性的object對(duì)象

function* gen() {while(true) {try {yield 42;} catch(e) {console.log("Error caught!");}}}var g = gen();var a = g.next();// { value: 42, done: false }var b = g.throw(new Error("Something went wrong"));// "Error caught!"http:// { value: 42, done: false }console.log(a);console.log(b.value+"::"+b.done);

以上所述是小編給大家介紹的JavaScript中 ES6 generator數(shù)據(jù)類型詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美日韩亚洲国产精品 | 久久国产精品久久久久久电车 | 国产成人自拍小视频 | 成年免费网站 | 97人操 | fc2国产成人免费视频 | 艹男人的日日夜夜 | 久久www视频 | 久久伊人精品热在75 | 蜜桃91丨九色丨蝌蚪91桃色 | 成人一级视频 | 精品亚洲一区二区三区 | 久久成人在线观看 | 亚洲欧美aⅴ | 九九黄色| 久久久久久久久国产精品 | 欧美一级淫片免费播放口 | 免费人成在线播放 | 国产精品久久久久久久久久久天堂 | 国产伦乱视频 | 福利在线影院 | 视频在线中文字幕 | 日韩高清电影 | 狠狠操天天射 | 三人弄娇妻高潮3p视频 | 中文字幕综合 | 久久久久久久久久性 | 超碰97人人艹| 欧美综合在线观看 | 亚洲一级电影在线观看 | 激情小说另类 | www.91sao| 国产中出在线观看 | 在线播放黄色网址 | 毛片大全在线观看 | 九九精品久久 | 欧美一级免费视频 | 日韩视频在线一区二区三区 | 精品国产96亚洲一区二区三区 | 中文字幕线观看 | 国产69精品99久久久久久宅男 |