iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JavaScript生成器如何使用
  • 161
分享到

JavaScript生成器如何使用

2024-04-02 19:04:59 161人浏览 独家记忆
摘要

这篇文章主要讲解了“javascript生成器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript生成器

这篇文章主要讲解了“javascript生成器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript生成器如何使用”吧!

JavaScript生成器如何使用

1. 什么是生成器 ?

可以理解成一个函数的内部状态的遍历器,每调用一次生成器,函数的内部状态发生一次改变。


2. 写法

  • function 与函数名之间有一个星号 *

  • 函数体内部可以使用 yield 表达式,定义不同的状态


3. 生成器是怎么是实现的?

  • 在生成器里面有着 next 方法,遍历下一个状态

  • yield 表达式:相当于暂停标志,只有调用 next 方法才会遍历下一个内部状态

  • 使用 next 方法时,从函数一开始或上一次停下来的地方开始执行,直到遇到下一个 yield 表达式 (或 return 语句) 为止
    (即生成器函数就相当于是一种可以暂停执行的函数,yield 表达式就是暂停标志)

让我们来通过个例子理解一下:
(举个我们熟悉的 Hello World!!!)

function* sayHW(){
    yield "Hello";
    yield "World";
    return "!!!";}let say = sayHW();console.log(say.next());console.log(say.next());console.log(say.next());

JavaScript生成器如何使用

这里一共调用了三次 next 方法:

第一次调用时,遇到 yield 停下来,next 方法返回一个对象,它的 value 属性就是当前 yield 表达式的值 Hellodone 属性的值是false,表示遍历未结束

第二次调用时,遇到 yield 停下来,next 方法返回一个对象,它的 value 属性就是当前 yield 表达式的值 Worlddone 属性的值是false,表示遍历未结束

然后直到第三次调用,执行到 return 语句(如果没有,就执行到函数结束)。这个时候,next 返回的 value 属性的值为 return 语句后面的值, done 的属性为 true (如果没有 return,这个时候 done 还是 false),表示循环结束。

接下来,我们再输出一次 next

console.log(say.next());

JavaScript生成器如何使用
这个时候 next 将会返回这个对象,valueundefineddone 为· true(不管之前有没有 return 语句,这时函数已经运行完毕了,所以 done 都为 true


4. 利用生成器函数来自定义迭代器

通过上文讲述,我们可以知道生成器函数允许我们定义一个包含自有迭代算法的函数, 同时它可以自动维护自己的状态。

由于自定义迭代器需要显示地维护其内部状态,因此我们可以用它来自定义迭代器。
(如果对迭代器不了解的可以先看看这篇文章:JavaScript迭代器)

接下来,让我们来通过一个例子理解一下:

现在有一个 colors 对象,我们想用 for...of 对其遍历,那么就可以自定义迭代器。

let colors = {
    blue : "蓝色",
    green : "绿色",
    yellow : "黄色"}

普通写法:

colors[Symbol.iterator] = function() {
	let keys = Object.keys(colors);
	// 如果用 let keys = Reflect.ownKeys(colors),keys 就会包括一些不可枚举的属性
	// 那么后面的 len 要减一,减去Symbol.iterator这个属性
	// 根据实际情况选择使用
	let len = keys.length;
	let index = 0;
	
	return {
	    next : function() {
	        if (index < len) {
	            return {
	                value : colors[keys[index++]],
	                done : false
	            }
	        }
	        return { done : true }
	    }
	}}

用生成器函数写法:

colors[Symbol.iterator] = function* () {
    let keys = Object.keys(colors);
    // 如果用 let keys = Reflect.ownKeys(colors),包括了一些不可枚举的属性
    // 那么后面的 len 要减一,减去Symbol.iterator这个属性
    // 根据实际情况选择使用
    let len = keys.length;
    let index = 0;
    
    while(index < len) {
        yield colors[keys[index++]];
    }}

JavaScript生成器如何使用

感谢各位的阅读,以上就是“JavaScript生成器如何使用”的内容了,经过本文的学习后,相信大家对JavaScript生成器如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript生成器如何使用

本文链接: https://www.lsjlt.com/news/87893.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript生成器如何使用
    这篇文章主要讲解了“JavaScript生成器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript生成器...
    99+
    2024-04-02
  • python生成器如何使用
    这篇文章主要介绍“python生成器如何使用”,在日常操作中,相信很多人在python生成器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python生成器如何使用”...
    99+
    2024-04-02
  • 如何使用IDEA代码生成器
    本篇内容主要讲解“如何使用IDEA代码生成器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用IDEA代码生成器”吧!基本使用IDEA 自带很多常用的动态模...
    99+
    2024-04-02
  • python密码生成器如何使用
    今天小编给大家分享一下python密码生成器如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用方法随机生成N位密码。...
    99+
    2023-06-30
  • 如何在PHP中使用生成器
    这期内容当中小编将会给大家带来有关如何在PHP中使用生成器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampSer...
    99+
    2023-06-14
  • 如何使用ASP函数和JavaScript生成二维码?
    二维码在现代生活中已经非常常见,很多人都知道如何使用二维码扫描器扫描二维码来获取信息。但是,如何生成二维码呢?在本文中,我们将探讨如何使用ASP函数和JavaScript生成二维码。 ASP函数是一种在ASP页面中使用的函数。ASP函数可以...
    99+
    2023-09-03
    函数 二维码 javascript
  • JavaScript迭代器与生成器使用详解
    目录迭代器 (Iterator)Iterator工作原理自定义遍历数据生成器 (Generator)生成器参数传递使用生成器实现回调地狱功能生成器函数实例生成器—thro...
    99+
    2022-11-13
    JavaScript迭代器与生成器 JavaScript生成器 JavaScript迭代器
  • 如何在Bash和JavaScript中使用Go生成二维码?
    二维码已经成为了现代生活中不可或缺的一部分。二维码可以用于多种场景,如商业广告、支付、身份识别等。在本文中,我们将探讨如何使用Go在Bash和JavaScript中生成二维码。 什么是二维码? 二维码是一种可以储存数据的编码图形。二维码是由...
    99+
    2023-06-26
    bash javascript 二维码
  • ionic2中如何使用自动生成器
    这篇文章给大家分享的是有关ionic2中如何使用自动生成器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ionic generator是命令行的功能,ionic2自动帮我们创建应...
    99+
    2024-04-02
  • Linux系统如何使用Python和Javascript生成二维码?
    Linux系统如何使用Python和JavaScript生成二维码? 二维码是一种常见的数据编码方式,它可以将大量的信息编码成一个方便扫描的图形。在现代生活中,二维码已经被广泛应用于各种场合,如支付、身份验证、广告等。本文将介绍如何在Lin...
    99+
    2023-09-09
    javascript linux 二维码
  • 如何使用JavaScript生成随机数并定时改变
    随着互联网技术的日益发展,JavaScript成为了近些年最受欢迎的编程语言之一。它不仅可以用来开发网站和移动应用程序,还可以实现各种有趣的功能,例如随机数生成。本文将介绍如何使用JavaScript生成随机数,并在几秒钟后将其改变。Jav...
    99+
    2023-05-14
  • 使用JavaScript实现随机颜色生成器
    目录项目基本结构1.颜色生成器的基本结构2.使用 HTML 添加标题3.创建用于颜色查看的显示器4.创建一个框以查看颜色代码5.创建生成器和复制按钮6.使用 JavaScript 激...
    99+
    2022-11-13
    JavaScript随机颜色生成器 JavaScript随机颜色生成 JavaScript 颜色生成
  • JavaScript如何生成二维数组
    目录JavaScript生成二维数组方法一 方法二方法三JS中创建二维数组的坑原因总结JavaScript生成二维数组 方法一  new Array(x).fil...
    99+
    2023-03-24
    JavaScript生成二维数组 JavaScript二维数组 生成二维数组
  • javascript如何生成动态表格
    本文小编为大家详细介绍“javascript如何生成动态表格”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript如何生成动态表格”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。案例分析因为里面的学生...
    99+
    2023-06-29
  • python如何使用reportlab生成pdf
    这篇文章主要介绍“python如何使用reportlab生成pdf”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python如何使用reportlab生成pdf”文章能帮助大家解决问题。Intro项...
    99+
    2023-06-29
  • 如何使用WCF生成代理
    这篇文章主要为大家展示了“如何使用WCF生成代理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用WCF生成代理”这篇文章吧。利用WSE(Web Service Enhancements)可...
    99+
    2023-06-17
  • 如何在PHP中使用生成器函数
    在PHP中,生成器函数是一种强大的工具,可以帮助您高效地创建和处理大量数据。这种函数允许您生成一个序列,但是只在需要时才会计算下一个值,可以大大节省系统资源和执行时间。在这篇文章中,我们将介绍如何在PHP中使用生成器函数。什么是生成器函数?...
    99+
    2023-05-19
    PHP编程 生成器函数 迭代器对象
  • python如何使用生成器的next()迭代
    这篇文章将为大家详细讲解有关python如何使用生成器的next()迭代,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。生成器的next()迭代在编程中的大多数正常情况下,可以访问一个索引,并使用计数器获取...
    99+
    2023-06-27
  • 如何在python中使用密码生成器
    本篇文章为大家展示了如何在python中使用密码生成器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,...
    99+
    2023-06-14
  • python如何使用生成器代替列表
    小编给大家分享一下python如何使用生成器代替列表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!尽量使用生成器代替列表##不推...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作