【JS第42期】GeneratorFunction 详解

  • 在js中,生成器函数实际上就是GeneratorFunction的实例对象
  • GeneratorFunction并非一个全局对象,它能够经过以下代码获取
Object.getPrototypeOf(function*(){}).constructor
复制代码
  • 使用GeneratorFunction比使用function* 表达式建立函数效率要低
  • 使用GeneratorFunction构造函数建立的生成器函数不会为其建立上下文建立闭包;它们始终在全局范围内建立。
  • 当运行它们时,它们只能访问本身的本地变量和全局变量,而不是从GeneratorFunction构造函数调用的范围的变量。这与使用eval与生成函数表达式的代码不一样。以下:
var b = 5
{
  let b = 10
  var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
  var g = new GeneratorFunction("a", "yield a * b * 2");
  var iterator = g(10);
  console.log(iterator.next().value); // 100
  function test() {
    console.log(b)
  }
  test() // 10
}
复制代码
  • 将GeneratorFunction构造函数调用为函数(不使用new运算符)与将其做为构造函数调用的效果相同。 若有侵权,请发邮箱至wk_daxiangmubu@163.com 或留言,本人会在第一时间与您联系,谢谢!!
    关注咱们
    长按二维码关注咱们,了解最新前端资讯
相关文章
相关标签/搜索