美文网首页Web前端之路@IT·互联网程序员
003|JavaScript ES6新特性之生成函数

003|JavaScript ES6新特性之生成函数

作者: 中年小钢炮 | 来源:发表于2017-05-30 14:46 被阅读44次

生成函数(generator function)是一种新型函数,是一个分段执行函数。它的语法与函数语法基本一致,但以下一些不同点:

  1. function关键字被替换成了 function*
  2. 返回返回值是一个生成器(generator)
  3. 通过 yield 关键字来分段

例如下面是一个生成函数:

function* sayHi()  // 使用function*来定义生成函数
{
    console.log("Hello") // 代码段1
    yield // 使用yield来分段

    console.log("World") // 代码段2
}

生成器

首先来理解一下生成器(generator)。生成品遵循iterator协议,有next方法。
普通的迭代器用于遍历对象(或容器),而生成器用于遍历生成函数的代码段。每调用一次next,则下一个代码段将被调用。

接着上例,我们来看一下生成器的使用:

var generator = sayHi() // 调用生成函数返回生成器
generator.next() // 运行代码段1
generator.next() // 运行代码段2

第一次调用next()时,代码段1运行,第二次调用next()时,代码段2运行。

yield 返回值

上述代码中,仅仅通过yield来将代码分段,实际上yield也可以传递value给生成器。
通过一个例子来了解一下:

function* idMaker() {
    yield 1 // 1将作为next的value
    yield 2 // 2将作为next的value
    yield 3 // 3将作为next的value
}

var generator = idMaker()
console.log(generator.next().value) // 输出 1
console.log(generator.next().value) // 输出 2
console.log(generator.next().value) // 输出 3

好了,完结。

什么是WeakMap?

相关文章

  • 003|JavaScript ES6新特性之生成函数

    生成函数(generator function)是一种新型函数,是一个分段执行函数。它的语法与函数语法基本一致,但...

  • ES6在企业中的应用

    模板字符串 解构赋值解构赋值最常用的在于函数。 数组spread es6浅拷贝 函数新特性之箭头函数 函数新特性之...

  • ES6的Generator函数(2018-06-21)

    声明Generator函数 Generator函数,又称生成器函数,是ES6的一个重要的新特性。 注意:1、普通函...

  • 合集

    JavaScript合集 ES6 ES6新特性原生实现一个promiseSymbol 实例 JavaScript读...

  • ES6新特性-class、深浅拷贝

    一、ES6新语法-class JavaScript 语言的传统方法是通过构造函数定义并生成新对象。ES6中引入了c...

  • JavaScript:生成器(Generator)

    生成器(Generator)是JavaScript ES6引入的特性,它让我们可以分段执行一个函数。 但是在谈论生...

  • ES6新特性

    [[toc]] ES6新特性 类在ES6之前,如果要生成一个实例对象,传统的方法就是要写一个构造函数,例子如下: ...

  • ES6 Class"类"

    一、传统方法与ES6"类"   JavaScript语言的传统方法是通过构造函数定义并生成新对象,如:   上述写...

  • ES6——Class基本语法

    一、 简介   JavaScript语言传统方法是通过构造函数定义并生成新对象。例:   而在ES6中,引入了Cl...

  • Class 的基本语法

    一、简介 JavaScript 语言的传统方法是通过构造函数定义并生成新对象。 ES6 提供了更接近传统语言的写法...

网友评论

    本文标题:003|JavaScript ES6新特性之生成函数

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