2.9JavaScript引用类型之生成器(Generator)

生成器对象也实现了 Iterable 接口。

1.生成器函数声明

定义生成器函数只需要在普通函数名称前面加一个星号(*),只要是可以定义函数的地方(不支持箭头函数),就可以定义生成器。

标识生成器函数的星号不受两侧空格的影响。

//生成器函数声明定义方式
function* 生成器函数名() {}
function *生成器函数名() {}
function * 生成器函数名() {}
//生成器函数表达式定义方式
let 变量名 = function* [生成器函数名]() {};
//作为对象字面量方法的生成器函数
let foo = {
  * 生成器函数名() {}
}

//作为类静态方法的生成器函数
class Foo {
  static * 生成器函数名() {}
}

//作为类实例方法的生成器函数
class Foo {
  * 生成器函数名() {}
}

2.yield

yield 关键字用来多次暂停和恢复一个生成器函数,它可以被认为是一个基于生成器函数版本的 return 关键字。

注意:同一个生成器函数内部可以同时出现 yieldreturn

function* 生成器函数名() {
  yield [表达式];
}

3.yield*

yield* 表达式用于委托给另一个生成器 或 可迭代对象。

与生成器函数定义类似,yield 星号不受两侧空格的影响。

function* name() {
    yield* 表达式;
}

4.调用生成器函数

调用生成器函数会生成一个Generator 对象,与迭代器相似,Generator 也实现了 Iterator 接口。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptlang/20615.html

(0)
上一篇 2020年9月8日
下一篇 2020年9月10日

相关推荐

  • 2.8JavaScript语言的Iterable和Iterator接口

    1.Iterable接口 方法 返回值 @@iterator 返回一个实现了Iterator接口的对象。 2.Iterator接口 方法 是否必须实现 返回值 next() 必须 返回一个实现了IteratorResult接口的对象。 return() 非必须 返回一个实现了IteratorResult接口的对象。 t…

  • 1.7JavaScript语言的函数(Function)

    1.函数声明 每次调用函数都会返回 Function 类型的实例。 2.函数分类 2.1全局函数 名称 修饰符 全局函数 —————— 2.2成员方法 名称 修饰符 静态访问器属性(类) static 静态方法(类) static 实例访问器属性(类) —————— 实例方法(类) —————— 访问器属性(对象字面量…

  • 2.9JavaScript引用类型之生成器(Generator)

    生成器对象也实现了 Iterable 接口。 1.生成器函数声明 定义生成器函数只需要在普通函数名称前面加一个星号(*),只要是可以定义函数的地方(不支持箭头函数),就可以定义生成器。 标识生成器函数的星号不受两侧空格的影响。 2.yield yield 关键字用来多次暂停和恢复一个生成器函数,它可以被认为是…

    JavaScript语言教程 2020年9月9日 22:52
    0720

发表回复

登录后才能评论