page contents

WEB前端教程:JavaScript 生成器

学习生成器基础知识,掌握生成器应用场景。

attachments-2022-11-nj3msTIB6361dc6cf1d3d.png课程目标

  • 学习生成器基础知识,掌握生成器应用场景。
  • 掌握生成器基本应用方法

 阅读

生成器是 ES6 新增的一个极为灵活的结构,拥有在一个函数块内暂停和恢复代码执行的能,生成器可以自定义迭代器和实现携程

 任务一

请你利用生成器实现一个随机数字序列生成器。

  • 可以指定随机数字的生成范围(默认是 0-10)
  • 可以指定这一组随机数字序列的个数(默认生成 5 个数字)
/**
 * @description  随机生成数字序列生成器函数
 * @method *isIcreateRandomGeneratorterable
 * @param  {number}start  生成数字的范围下限
 * @param  {number}end  生成数字的范围上限
 * @param  {number}num  生成数字的个数
 **/

function* createRandomGenerator(start = 0, end = 10, num = 5) {
  // your code here
}

// 测试用例
let randowSequence = createRandomGenerator(0, 20, 10); //调用生成器,随机生成范围是1-20的10个数字
let randowSequence2 = createRandomGenerator(10, 100, 50); //调用生成器,随机生成范围是10-100的5个数字

for (let number1 of randowSequence) {
  console.log(number1);
}
//打印出10个范围为1-20的数字

for (let number2 of randowSequence2) {
  console.log(number2);
}
//打印出5个范围为10-100的数字

  任务二

请你运用生成器实现二叉树遍历

  • 因为这一节主要学习生成器,所以为了大家能够快速练习我们给出了二叉树的构造函数,有时间的同学可以自己实现二叉树的实现
  • 为二叉树部署 Iterator 接口,实现一个键名为 Symbol.iterator 的方法,使二叉树也变为可迭代对象,并且该方法是一个生成器方法,并在调用时返回一个迭代器
  • 遍历顺序不做要求,有精力的同学可以使用先序,中序,后序都实现一次
  • 要求可以使用 let...of 迭代二叉树对象实例,打印出每一个二叉树节点
class BinaryTree {
  constructor(value, left = null, right = null) {
    this.value = value;
    this.left = left;
    this.right = right;
  }

  /** Prefix iteration */
  *[Symbol.iterator]() {
    // your cod here
  }
}

//测试用例
//以下代码创建一个二叉树
const tree = new BinaryTree(
  "a",
  new BinaryTree("b", new BinaryTree("c"), new BinaryTree("d")),
  new BinaryTree("e")
);

//并通过for-of对二叉树进行迭代:
for (const x of tree) {
  console.log(x);
}
// Output:
// a
// b
// c
// d
// e

  自测问题

  • 标识生成器的 * 号会受到两侧空格影响吗?
  • 生成器是什么?应用场景有哪些?
  • 下面的函数会在控制台打印 执行生成器函数 吗?
function* generatorFn() {
  console.log("执行生成器函数");
  yield 1;
}
const g = generatorFn();
  • 请判断控制台将打印出什么?
function* genr() {
  console.log(yield);
  console.log(yield);
}
let g = genr();
g.next("Start");
g.next("Step 1");
g.next("Step 2");


更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

attachments-2022-11-D86cus7E6361dc1f5cf2b.jpg

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章