欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 解決URL地址中的中文亂碼問題的辦法

    解決URL地址中的中文亂碼問題的辦法

    這篇文章主要介紹了解決URL地址中的中文亂碼問題的辦法的相關資料,需要的朋友可以參考下
    2017-02-02
  • 微信小程序webView嵌入H5的方法實例

    微信小程序webView嵌入H5的方法實例

    web-view是小程序提供的一個可以直連h5頁面的組件,只要傳遞一個h5頁面的地址,就可以在小程序里直接打開預覽該h5頁面,這篇文章主要給大家介紹了微信小程序webView嵌入H5的相關資料,需要的朋友可以參考下
    2021-07-07
  • 用js實現(xiàn)計算代碼行數(shù)的簡單方法附代碼

    用js實現(xiàn)計算代碼行數(shù)的簡單方法附代碼

    用js實現(xiàn)計算代碼行數(shù)的簡單方法附代碼...
    2007-08-08
  • 簡單實現(xiàn)Bootstrap標簽頁

    簡單實現(xiàn)Bootstrap標簽頁

    這篇文章主要教大家簡單實現(xiàn)Bootstrap標簽頁,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript中for of和for in的區(qū)別詳解

    JavaScript中for of和for in的區(qū)別詳解

    對于初學者,我們或許只知道無論是for of還是for in他們都有一個功能那就是遍歷,至于具體的細節(jié)或許我們不是很清楚,那么接下來我們就來詳細的區(qū)分一下for of和for in他們之間的不同點和相同點,需要的朋友可以參考下
    2023-06-06
  • ASP中Sub和Function的區(qū)別說明

    ASP中Sub和Function的區(qū)別說明

    主要的區(qū)別是有返回值,一般sub是用來調(diào)用大量的內(nèi)容的時候用sub,對于需要計算并需要返回值的時候用function,多用function定義函數(shù)。
    2011-01-01
  • Javascript獲取頁面元素的絕對位置實現(xiàn)

    Javascript獲取頁面元素的絕對位置實現(xiàn)

    這篇文章主要為大家介紹了Javascript獲取頁面元素的絕對位置實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 收藏一個代碼

    收藏一個代碼

    收藏一個代碼...
    2006-08-08
  • 深入淺析JavaScript中的Function類型

    深入淺析JavaScript中的Function類型

    Function是javascript里最常用的一個概念,javascript里的function是最容易入手的一個功能,但它也是javascript最難理解最難掌握的一個概念。這篇文章主要介紹了JavaScript中的Function類型的相關資料,一起看下吧
    2016-07-07
  • 微信小程序時間軸組件的示例代碼

    微信小程序時間軸組件的示例代碼

    這篇文章主要介紹了微信小程序時間軸組件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論