最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解js generator數(shù)據(jù)類型

 更新時間:2016年08月16日 09:21:07   投稿:jingxian  
下面小編就為大家?guī)硪黄钊肜斫鈐s generator數(shù)據(jù)類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 概述

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

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

2. 例子

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

2.1

'use strict';

function next_id(){
  var id = 1;
  while(id<100){
   yield id;
   id++;
  }
  return id;
}

// 測試:
var
  x,
  pass = true,
  g = next_id();
for (x = 1; x < 100; x ++) {
  if (g.next().value !== x) {
    pass = false;
    alert('測試失敗!');
    break;
  }


}
if (pass) {
  alert('測試通過!');
}

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

function* idMaker(){
  var index = 0;
  while(true)
    yield index++;
}

var gen = idMaker(); // "Generator { }"

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2

2.3Generator.prototype.next()

當?shù)Y束時, Generator.next().done ===true, 結束之前 ===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ù)值,并結束迭代器

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()方法, 通過拋出一個異常到迭代器中,來重新獲得迭代器的執(zhí)行;

返回 帶有 value和done兩個屬性的object對象

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!"
// { value: 42, done: false }
console.log(a);
console.log(b.value+"::"+b.done);

以上這篇深入理解js generator數(shù)據(jù)類型就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

平乐县| 阿巴嘎旗| 双城市| 宜兰市| 山丹县| 宣城市| 万宁市| 微山县| 小金县| 旬阳县| 施秉县| 鹰潭市| 永定县| 泰顺县| 论坛| 察雅县| 泸西县| 日土县| 敖汉旗| 台北县| 余干县| 东丰县| 合肥市| 平利县| 苏尼特左旗| 济阳县| 雅安市| 新郑市| 达州市| 观塘区| 麻城市| 辽宁省| 乐昌市| 平武县| 桂阳县| 阳江市| 藁城市| 扎兰屯市| 亳州市| 信丰县| 宁津县|