美文网首页
年糕のES6笔记之Generator函数

年糕のES6笔记之Generator函数

作者: 李年糕子 | 来源:发表于2018-04-29 15:56 被阅读6次

前言(重点)

这一系列的文章是我搜集了很多文章和资料综合在一起整理出的一个适合我自己学习的笔记,并不是原创内容。
为什么放在最前面,因为我觉得原作者才是最辛苦哒。笔记也是持续更新的,若有错误欢迎提出。

学习资料:

出现の理由

Generatorの定义

下定义

Generator函数是一个必须符合以下两个条件的函数

  1. 函数名前有*号。
  2. 函数内部使用了yield关键字。
function *name {
  yield 'hello';
}

Q:为什么叫做Generator?
A:因为Generator返回一个遍历器对象,所以它可以被认为是一个遍历器对象生成器,Generator这个名字很符合它。

Q:定义时*的位置有影响吗?
A:ES6没有明确规定星号位置。以下写法都对,但是最普遍的使用第二种:

function * foo(x, y) { ··· }
function *foo(x, y) { ··· }
function* foo(x, y) { ··· }
function*foo(x, y) { ··· }

Q:yield是什么意思?
A:yield表达式就是暂停标志。当Generator调用后返回了迭代器对象,我们可以对这个对象使用next()方法,它会执行了一个yield表达式后就停止下来。直到下一次再调用next()又会执行到下一个yield表达式后。

function* generator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}
var test = generator();
test.next()  // { value: 'hello', done: false }
test.next()  // { value: 'world', done: false }
test.next()  // { value: 'ending', done: true }
test.next()  // { value: undefined, done: true }

划区别

Generator函数和普通函数的区别:

  1. 上面“下定义”写的必须符合的两个条件。
  2. 调用Generator函数后,函数并不执行,返回的是一个指向内部状态的指针对象(遍历器对象)。
function* test() {
  yield 1;
  yield 2;
  yield 3;
}
// 返回一个 iterator,可以继续调用next()方法
let iterator = test();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3

使用の方法

注意点:

  1. yield只能在Generator函数里使用,否则报错。
  2. yield如果用在另一个表达式之中,必须放在圆括号里面。
  3. 箭头函数不能做Generator函数。

相关文章

  • 年糕のES6笔记之Generator函数

    前言(重点) 这一系列的文章是我搜集了很多文章和资料综合在一起整理出的一个适合我自己学习的笔记,并不是原创内容。为...

  • 03-JavaScript-Generator异步编程

    Generator 概念 Generator 函数是 ES6 提供的一种异步编程解决方案 Generator 函数...

  • co库的简易实现

    generator Generator 函数是 ES6 提供的一种异步编程解决方案。 执行generator函数会...

  • JavaScript异步处理——Generator及async函

    Generator Generator 函数是 ES6 提供的一种异步编程解决方案。Generator函数在fun...

  • Generator函数介绍

    什么事Generator函数 Generator函数是ES6提供的一种异步编程解决方案, 可以把Generator...

  • 20.ES6中Generator生成器

    Generator是ES6的生成器1、Generator 函数是 ES6 提供的一种异步编程解决方案,在函数中可以...

  • Generator 函数

    Generator Generator 函数是 es6 中的新的异步编程解决方案,本节仅讨论 Generator ...

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

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

  • Generator函数

    Generator 函数是 ES6 提供的一种异步编程解决方案。调用 Generator 函数后,该函数并不执行,...

  • 关于es6新属性yield

    关于es6新属性yield yield是Generator函数中中断函数返回的一个属性。Generator函数即一...

网友评论

      本文标题:年糕のES6笔记之Generator函数

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