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

Generator 类型实现了 Iterable 接口。

1.生成器函数声明

生成器函数声明只需要在函数名前面加一个星号 * 即可,星号 * 不受两侧空格的影响。

生成器函数支持函数声明、函数表达式,不支持箭头函数表达式。

//生成器函数声明
[async] function* 生成器函数名() {}
[async] function *生成器函数名() {}
[async] function * 生成器函数名() {}
//生成器函数表达式
//命名生成器函数表达式
{ let | const } gf = [async] function *生成器函数名() {};

//匿名生成器函数表达式
{ let | const } gf = [async] function* () {};

2.yield和yield *

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

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

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

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

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

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

3.生成器函数作用域

3.1全局函数

名称修饰符
全局函数参考生成器函数声明、生成器函数表达式。

3.2成员方法

名称修饰符
静态访问器属性(类)static get *static set *
静态方法(类)static *
静态初始化块(类)static *
实例访问器属性(类)get *set *
实例方法(类)*
构造函数(类)*
访问器属性(对象字面量)get *set *
方法(对象字面量)*

3.3局部函数

名称修饰符
嵌套函数参考生成器函数声明、生成器函数表达式。

4.生成器函数调用

生成器函数调用会返回一个Generator 类型的实例,与迭代器相似,Generator 也实现了 Iterator 接口。

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

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年9月8日
下一篇 2020年9月10日

相关推荐

  • 1.4JavaScript语言的类型(Type)

    JavaScript 语言有两种类型:原始类型(Primitive Type) 和 引用类型(Reference Type)。 原始类型包括:大整数类型(不可变的)、数值类型(不可变的)、布尔类型(不可变的)、字符串类型(不可变的)、符号类型(不可变的)、Undefined类型(不可变的)、Null类型(不可变的)。 …

  • 2.11JavaScript语言的异步函数

    1.异步函数声明 如果您想声明一个异步函数,只需要首先在普通函数前添加一个 async 关键字,然后在函数体内至少包含一个 await 关键字即可。普通函数支持函数声明、函数表达式、箭头函数、立即调用的函数表达式和实例方法。 2.await表达式 await 关键字后的表达式可以是 实现了 Thenable 接口的对象…

  • 2.2JavaScript原始类型之字符串(String)

    1.单引号和双引号字符串字面量 JavaScript 语言的单引号和双引号字符串字面量语法上没有区别,所以以下一并讲解。 单引号和双引号字符串字面量支持所有转义序列。 单引号和双引号字符串字面量不支持字符串插值。 单引号和双引号字符串字面量支持在每行末尾添加一个转义字符反斜杠 \ 转义隐式的换行符从而跨多行编写一行代码…

发表回复

登录后才能评论