美文网首页
生成器函数(generator 函数) / 迭代器对象

生成器函数(generator 函数) / 迭代器对象

作者: 欢西西西 | 来源:发表于2022-05-06 10:22 被阅读0次

[详见忍者秘籍第 6 章]

https://www.cnblogs.com/xiaohuochai/p/7253466.html#anchor7

  1. 生成器函数的声明

function* createIterator () {

   // 也可以用函数表达式来创建 var createIterator = function *(){};

   // 生成器函数返回一个迭代器

}

// 生成器函数也可以作为对象的方法

var obj = {

    createIterator: function *(){},

    *createIterator1(){}

};

  1. 生成器函数能生成一组值的序列,但每个值的生成基于每次请求,并不像标准函数那样立即生成。调用生成器时,不会立即执行函数体内的代码,会生成一个迭代器。
  2. 该迭代器控制生成器代码的执行(通过执行迭代器的 next 方法);该迭代器保留着一个在它创建位置处的执行上下文;之所以能从挂起状态恢复执行,是因为这个上下文一直没有被销毁,因为这个迭代器对象对它的引用一直存在;不像标准函数执行完后,对应的执行上下文会从栈中弹出,并被销毁。
  3. yield 关键字,只能在生成器函数中使用。每次调用迭代器的 next()方法,生成器会从上次挂起的地方继续运行至遇到下一个 yield 语句或 return 语句
  4. 执行迭代器对象 的.next(),会返回一个对象:
{
   value: [], // value 表示本次迭代的返回值
   done: false  // done 表示此迭代器是否迭代结束,结束时为 true,此时 value 返回 undefined
}
  1. 迭代器对象 next 方法的入参,会作为上一次 yield 表达式执行的返回值;第一次调用 next 的入参是无意义的。执行中如果遇到 return,则 return 的值也会作为 next()的 value 值,但此时 done 为 true;无 return 的情况下,done 是需要检测的,例如生成器中有 2 次 yield,在第三次调用.next()时 done 才会返回 true

  2. 访问数组的迭代器
    a = [1,2,3];
    a[Symbol.iterator]();

  3. 检测对象是否为可迭代对象:String、Array、Map、Set、HTMLCollection 是,对象和数值不是

    function isIterable(object) { return typeof object[Symbol.iterator] === "function"; }

  4. 可迭代的对象能使用哪些语法? for-of  展开运算符(...)

  5. 迭代器对象的另一个方法:throw() 配合生成器函数中的 try/catch 块

相关文章

  • Generator函数实现斐波那契数列

    ES6 中 generator生成器函数 特点: 调用generator函数返回一个迭代器(iterator)对象...

  • Generator

    Generator 概念: Generator 函数返回的遍历器对象 基本用法 // 定义生成器函数 ...

  • 生成器(Generator)

    什么是生成器 生成器是一个通过构造函数 Generator 创建的对象,生成器既是一个迭代器,同时又是一个可迭代对...

  • 5. Python3 中的生成器的高级方法 及总结

    回顾: 生成器就是含有yield操作的函数,生成器函数的返回值就是一个迭代器(generator object) ...

  • ES6 异步进阶第二步:Generator 函数

    一、什么是生成器 Generator? 生成器对象是由一个 Generator 函数返回的,并且她符合 可迭代协议...

  • 生成器

    生成器 在python中,使用了yield的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,...

  • python之yield和yield from

    yield,使用 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器...

  • Python基础-16生成器-迭代器

    16.生成器-迭代器     可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象,在Python中提供...

  • Generator

    生成器。本身是函数,执行后返回迭代的对象, 内部配合yield使用,Generator函数分段执行, 遇到 yi...

  • 生成器函数(generator 函数) / 迭代器对象

    [详见忍者秘籍第 6 章] https://www.cnblogs.com/xiaohuochai/p/72534...

网友评论

      本文标题:生成器函数(generator 函数) / 迭代器对象

      本文链接:https://www.haomeiwen.com/subject/ryxoyrtx.html