es6学习笔记4-iterator迭代接口、for...of循环、Generator函数

零基础学simulink仿真建模--使用Simulink来构建一个混合动力无人机中燃料电池与锂电池协同控制的仿真模型 延长飞行时间:燃料电池的能量密度高于锂电池,适合长时间稳定供电。提高功率密度:锂电池能够快速响应瞬时高功率需求,比如起飞和加速阶段。优化能源管理:通过有效的能量管理系统,可以根据实际需求动态调整燃料电池和锂电池的工作状态,从而提高整体效率。通过上述步骤,我们简要介绍了如何基于Simulink实现混合动力无人机中燃料电池与锂电池协同控制的仿真模型。 阅读详情

1.iterator迭代接口

   ES6提供了一种统一的接口机制,以便于遍历不同的数据结构,原有的数组和对象都内置了这个接口,在其原型对象__proto__上即可看到Symbol.iterator,而为了处理ES6新增的数据结构,任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

  iterator对象上提供了一个next方法,每次调用则会依次指向其对象的每个对象,done表示遍历是否完成,实际遍历的过程就是内部维护了一个数据指针,一直调用next方法直至遍历完成。

2.for...of循环

  ES6 借鉴 C++、Java、C# 和 Python 语言,引入了for...of循环,作为遍历所有数据结构的统一的方法。 换句话说,只要该数据结构具有iterator迭代接口,即可使用for...of进行循环。

const arr = [1,2,3]

for (var item of arr){
     console.log(item);
}
// 打印结果
1
2
3

而没有iterator接口的数据结构是无法使用for...of进行遍历的,如

const obj = {
    a:'123',
    b:'456'
}
for (var item of obj){
     console.log(item);
}
//输出报错
TypeError: obj is not iterable

应用场景:在数据与方法高度耦合的时候,如果数据进行更新,遍历其新数据的相应方法可能也要更新,而iterator接口提供了统一的遍历方法

与for...in的区别:

1.for...in遍历得到的是keys,而for...of得到的是values.

2.for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟for...in循环也不一样。

 

3.Generator生成器函数

  Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。

function * cloudgaps() {
    console.log('123');
    return 100
}

const result = cloudgaps()
console.log(result);

//打印结果
Object [Generator] {}

     通过函数名前加*可以生成一个generator函数,如果直接调用只会返回一个generator对象,而实际上generator内置了迭代器,通过next才能遍历调用里面的执行语句。函数内执行时,遇到yield就会暂停后面的操作,并将yield后面的值作为属性value返回值。

  需要注意的是,yield表达式后面的表达式,只有当调用next方法、内部指针指向该语句时才会执行,因此等于为 JavaScript 提供了手动的“惰性求值”(Lazy Evaluation)的语法功能。

function * cloudgaps() {
    console.log('123');
    yield 1
    console.log('456');
    yield 2
    console.log('789');
    yield 3
}

const result = cloudgaps()
console.log(result.next());
console.log(result.next());
console.log(result.next());
//输出结果
123
{ value: 1, done: false }
456
{ value: 2, done: false }
789
{ value: 3, done: false }

应用场景:自增ID。

function *IdMaker(){
    let id = 0
    while(true){
        yield id ++
    }
}
const id = IdMaker()
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);

//输出结果
0
1
2
3

 

5套高颜值AI漫剧女主设定图!直接拿去做漫剧(附完整提示词) 左侧特写放大表现暖棕眼妆、豆沙唇、红宝石首饰、发丝与针织纹理,四个视图严格保持同一人物脸模、发色、服装、首饰和身体比例,柔和复古棚拍光,低饱和酒红与奶油色配色,真实布料、皮革、金属与宝石材质,高级精致角色资产设定图,高清8K。佩戴珍珠与透明水晶耳坠、纤细珍珠项链;左侧特写放大至胸部以上,清晰表现皮肤、眼妆、发丝、耳饰和针织材质,人物四个视图保持同一脸模、发型、服装、饰品和身体比例,柔和棚拍漫射光,轻微地面阴影,高级细腻材质,真实发丝,细腻皮肤,高精度角色资产设定图,高清8K质感。 阅读详情

相关推荐

别再手动算临界转速了!用ANSYS Workbench 2023 R2快速搞定转子坎贝尔图(附完整APDL命令流)

本文详细介绍了如何利用ANSYS Workbench 2023 R2快速生成转子坎贝尔图,实现全自动临界转速分析。通过对比传统手动计算与Workbench自动化流程的效率差异,展示了其在旋转机械设计中的革命性优势,包括大幅缩短分析周期、提升精度至98.7%。文章还提供了完整的APDL命令流和实战案例,帮助工程师快速掌握这一高效工具。

weixin_42699679的博客 472

ES6 for循环的三种方法

// 1.普通for循环 let totalPrice1 = 0; for (let i = 0; i < books.length; i++) { totalPrice1 += books[i].count * books[i].price } console.log(totalPrice1); // 2. for(let i in this.books),i是下标 let totalPrice2 = 0; for (let i in books) { let book = books[i

weixin_47087818的博客 3677

遥感SCI期刊模板下载教程———IEEE TGRS、GRSL、JSTARS

IEEE下的期刊模板下载,以IEEE TGRS 为例。

海淀小天的blog 2万+

ES6的三种for循环写法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script.

yuguang的博客 6042

SAP PS项目计划成本与预算设计:从概念到可用性控制详解

在项目管理中,成本计划与预算管控是决定项目成本能否受控的两个核心概念。成本计划反映“预计花费”,预算是“授权上限”,两者在WBS结构上既相互关联又彼此独立。SAP PS通过计划版本管理不同口径的估算,并借助可用性控制机制对采购申请、采购订单等业务操作进行事前拦截与提示,从而实现从“事后追认”到“事前控制”的转变。理解计划成本作为预算基线、预算作为控制阀门的原理,能够帮助实施顾问和项目管理者合理设计项目财务流程。在大型工程、研发或总包项目中,明确WBS层级、预算对象和检查规则,可有效避免超支风险。围绕SAP

weixin_33146151的博客 360

【毫米波混合波束成形】第3章 深度展开网络:将迭代优化嵌入计算图

相位提取算子 $P_\phi: \mathbb{C}^N \to \mathbb{C}^N$ 定义为逐元素相位归一化 $P_\phi(z) = \exp(j \cdot \angle z)$。该算子在复数域非全纯(Non-holomorphic),标准反向传播需扩展至Wirtinger微积分框架。对于复数变量 $z = x + jy$,Wirtinger导数定义:相位提取算子的Jacobian矩阵在极坐标下具有稀疏结构。

VectorShift的博客 407

ES6 新增的循环方法

ES6 新增的循环方法为我们在遍历数组、字符串、Set、Map 等数据结构时提供了更加便捷的方式。在实际开发中,我们可以根据需求选择合适的方法进行使用。

前端程序猿的博客 1867

R语言机器学习算法实战系列(四)随机森林算法分类器+SHAP值 (Random Forest)

本文介绍了如何使用R语言实现随机森林算法,用于构建乳腺癌分类器。随机森林通过多棵决策树投票判断标签,具有避免偏差和提升模型效果的优势。文章详细讲解了数据下载、R包加载、数据预处理、特征选择、模型构建与评估等步骤。数据集包含569份恶性和良性肿瘤样本的32类指标,通过随机森林模型进行特征选择和分类。最终,文章提供了完整的代码和可视化结果,帮助读者理解并实现随机森林算法。

专注生信领域 3321

ES6 中 数组新增的循环

ES6 数组循环 先说一下ES5循环: 1. for for(let i=0; i<arr.length; i++){ //循环体语句 } 2. while while(条件为真){ //循环体语句 } 然后来说ES6数组中新增的一些循环: forEach | map | filter | some() | every() | reduce() | reduceRight() | for…of… 语法一致 arr.forEach | map | filter |

ikEason_的博客 1457

【AI 智能体】Windows 环境 Hermes Agent(爱马仕)安装详细过程

Windows 环境 Hermes Agent(爱马仕)安装详细过程

congge_study的博客 1830

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 342

用es6请求接口循环出结果

function easyAjax() { $.ajax({ type: "post", // url: "/api/app/portal/partner/type", url: ajaxUrl + "/api/app/portal/partner/type", dataType: "json"...

catherine的博客 1482

基于 YOLO26 的车辆实时检测与计数系统

本文提出了一种基于YOLO26的车辆实时检测与计数系统。系统采用CSPDarknet53作为主干网络,结合特征金字塔和多尺度预测实现高精度车辆检测。通过DeepSORT算法进行目标跟踪,并统计车辆数量、行驶方向和交通流量。实验表明,该系统在保持实时性能的同时,检测精度达到92.3%,可有效应用于智能交通管理。系统采用Python实现,支持GPU加速,适用于多种交通场景下的车辆监测需求。

一键难忘的博客 908

ES6基础:Iterator和for...of

Iterator(遍历器) 和 for…of 循环 遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制 任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员) 一、迭代器和 for…of 浅谈 1.1 传统 for 循环 先来看一段标准的 for 循环的代码: var arr = [1,2,3]; for (let i = 0; i < arr.length; i++) { console.log(

余光的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

一文大白话讲清楚ES6迭代器Iterator和生成器Generator的原理和作用

一文大白话讲清楚ES6迭代器Iterator和生成器Generator的原理和作用

xiaobangkeji的博客 1771

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ES6 Generator函数

Generator 函数是 ES6 提供的一种异步编程解决方案。Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。一是,function关键字与函数名之间有一个星号二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。

行如逆水行舟,不进则退 893

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ES6 Iterator 与 for...of 循环

ES6 Iterator 与 for...of 循环

m0_52913477的博客 1133

ES6补充篇-for of + iterator

前言 本文主要是补充一些遗漏的知识点,望大家批评指教 1、for of循环方式 在ES6提供了一种新的遍历数据结构的方式 for of 这种循环方式会作为以后遍历所有的数据结构的统一方式 for of示例如下 1、遍历数组 let arr = ['first', 'second', 'third', 'four']; for (const num of arr) { console.log(num); } result => first result => second .

往事不回头,余生不将就 6955

ES6——18. Iterator 和 for...of 循环

本质上,遍历器是一种线性处理,对于任何非线性的数据结构,部署遍历器接口,就等于部署一种线性转换。不过,严格地说,对象部署遍历器接口并不是很必要,因为这时对象实际上被当作 Map 结构使用,ES5 没有 Map 结构,而 ES6 原生提供了。其次,Set 结构遍历时,返回的是一个值,而 Map 结构遍历时,返回的是一个数组,该数组的两个成员分别为当前 Map 成员的键名和键值。上面代码中,我们将它的遍历接口改成数组的。由于数组的遍历会调用遍历器接口,所以任何接受数组作为参数的场合,其实都调用了遍历器接口。

chtazycdf的博客 1078

ES6 迭代器(Iterator)和 for...of循环使用方法

一、什么是迭代器? 生成器概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中。Iterator可以使我们不需要初始化集合,以及索引的变量,而是使用迭代器对象的 next 方法,返回集合的下一项的值,偏向程序化。 迭代器是带有特殊接口的对象。含有一个next()方法,调用返回一个包含两个属性的对象,分别是value和done,value表示当前位置的值,don...

hsany330的专栏 1114

ES6的Iterator 和 for...of 循环

在JavaScript中,Iterator(遍历器)是一种接口,用于遍历数据结构(如数组、对象等)中的元素。它提供了一种统一的方式来访问集合中的每个项,包括值和位置。

Front end development engineer 2万+

ES6之Iterator和for...of循环

ES6之Iterator和for...of循环

TSORA-C的博客 880

【JavaScript 漫游】【055】Iterator 和 for...of 循环

本篇文章为【JavaScript 漫游】专栏的第 055 篇文章,记录了 ES6 规范中 Iterator 和 for...of 循环的知识点。

CYW2019_HUST的博客 1043

for循环中return会跳出吗_ES6 for...of循环

概念ES6引入了for...of循环作为遍历所有数据结构的统一方法。一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for...of循环遍历它的成员,也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。for...of循环可以使用的范围:字符串;数组;Set和Map结构;某些类似数组的对象(比如argument...

weixin_39721370的博客 2356

ES6 iterator+generator

Iterator(迭代器或遍历器) iterator的概念的使用 iterator的作用:用来提供一种统一的接口机制,来遍历不同的数据结构。 iterator用来遍历集合类型,我们现在了解到的集合类型有:Array,Object,Set,Map Array,Set和Map可以使用forEach来遍历 Object使用for…in来遍历 这四种集合的遍历方式不同,然后当它们相互组合的时候,会产生各种变化的数据类型:比如数组包对象,对象又包Set等操作。这种操作下的遍历就更加难以统一。 实际使用使用,需要在数据

weixin_49230250的博客 1413

ES6 for...of循环

ES6 for…of循环 Iterator接口的目的是为所有的数据结构提供一种统一的访问机制,即for…of循环。当使用for…of循环遍历某种数据结构的时候,该循环会自动去寻找Iterator接口。 ...

weixin_42695446的博客 4143
上一篇: es6学习笔记3-Reflect、static、Set、Map、Symbol
下一篇: es7、es8新增语法概述
cloudgaps
博客等级 码龄6年 11粉丝 43原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值