红宝石阅读笔记

chatgpt/2023/10/4 8:49:24

第七章 迭代器与生成器

7.3 生成器

 

乍一看理解,仔细想没理解,然后自己让n=2,还原nTimes,等价于

function* nTimes() {if (true) {yield* (function* A() {if (true) {yield* (function* B() { })();yield 0;}})();yield 1;}
}

最难理解的是n=0的时候

yield* (function* B() { })();

yield*后面必须跟一个可迭代对象,*号函数正好返回一个可迭代对象,但是当这个可迭代对象没有可以迭代的操作(也就是内部没有yield表达式)时候,会被忽略(yield* (function* B() { })(); 被当成一个同步代码在执行),所以应该执行yield 0;

let aa = nTimes();
console.log(aa.next());
console.log(aa.next());

所以第一次打印出{ value: 0, done: false }。

也就是

(function* A() {if (true) {yield* (function* B() { })();yield 0;}
})()

执行完毕。

所以第二次执行的时候就相当于在执行yield 1;,所以打印出来就是{ value: 1, done: false }。

所以yield* nTimes(3 - 1)     等价于

yield* [yield 2 - 1, yield 1 - 1];

nTimes(3) 等价于nTimes3()

function* nTimes(n) {if (n > 0) {yield* nTimes(n - 1);yield n - 1;}
}function* nTimes3() {yield* [yield 2 - 1, yield 1 - 1];yield 2 - 1;
}

//TODO持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313833.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘电脑上的几大流氓软件,查看你的设备是否中招?

当我们使用电脑时,不可避免地会接触到各种软件。有些软件为我们提供了便利和安全保障,而另一些则隐藏着不良企图。这些被称为"流氓软件"的程序,可能给我们的电脑带来麻烦、干扰甚至威胁我们的数据安全。让我们一起盘点一下电脑上的…

网络运维总复习结构

目录 前言 基础运维技能 3种常用的字符编码,编码间的切换 简述文件的操作流程,三个常用的文件操作方法 open函数中的mode参数表示什么,mode的四个取值 阐述配置文件的格式,解析配置文件主要用到哪个模块的哪个类&#xff0c…

【业务功能篇55】Springboot+easyPOI 导入导出

Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂,学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

【Git系列】分支操作

🐳分支操作 🧊1. 什么是分支🧊2. 分支的好处🧊3. 分支操作🪟3.1 查看分支🪟3.2 创建分支🪟3.3 切换分支 🧊4. 分支冲突🪟4.1 环境准备🪟4.2 分支冲突演示 &am…

Vue系列第六篇:axios封装,登录逻辑优化,404页面实现,Go语言跨域处理

第五篇利用vue实现了登录页面,用go语言开发了服务端并最后在nginx上进行了部署。本篇将axios封装,登录逻辑优化,404页面实现。 目录 1.前端 1.1代码结构 1.2源码 2.服务端 2.1源码 3.运行效果 4.注意事项 4.1webpack.config.js和vue…

超详细的74HC595应用指南(以stm32控制点阵屏为例子)

74HC595是一款常用的串行输入/并行输出(Serial-in/Parallel-out)移位寄存器芯片,在数字电子领域有着广泛的应用。它具有简单的接口和高效的扩展能力,成为了许多电子爱好者和工程师们的首选之一。本文将深入介绍74HC595芯片的功能、…

从零开始学python(十三)爬虫工程师自动化和抓包

前言 回顾之前讲述了python语法编程 必修入门基础和网络编程,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析,爬虫数…
推荐文章