javascript表示集合的数据结构有
es5: array object
es6: map set,
一共4种数据集合

需要一种统一的接口机制来处理所有不同的数据结构
遍历器就是这样一种机制,它是一种接口,为各种不同的数据结构提供统一的访问机制
任何数据结构,只要部署Iterator接口就可以完成遍历操作
Iterator作用有三个
1,为各种数据结构提供一个统一的简便的访问接口;
2,使得数据结构成员能够按某种次序排列
3,ES6创造了一种新的遍历命令———for...of循环,Iterator接口主要提供for...of消费
Iterator遍历过程如下
1,创建一个指针对象,指向当前数据结构的起始位置,
2,不断调用指针对象的next方法,直到它指向数据结构的结束位置
3,每次调用next方法都会返回一个包含value和done两个属性的对象,其中value属性是当前成员的值,done属性是一个布尔值,表示遍历是否结束

数据结构只要部署Iterator接口,我们就称这种数据结构为可遍历
es6规定默认的Iterator接口部署在数据结构的Symbol.iterator属性上,或者说一个数据结构只要具有Symbol.iterator属性就可以认为是可遍历的(iterable)
es6中有些数据结构原生具备Iterator接口,(比如数组),即不用任何处理就可以被for...of循环遍历
所有部署了Symbol.iterator属性的数据结构都称为部署了遍历器接口,调用这个接口就会返回一个遍历器对象
原生具备Iterator接口的数据结构如下
Array Map Set String TypedArray 函数的arguments对象 NodeList对象

调用Iterator接口的场合
1,解构赋值
2,扩展运算符
3,yield

for...of循环
1,数组
2,set,map结构
3,计算生成的数据结构 arr.entries()
4,类似数组的对象 如字符串, DOM NodeList对象,arguments对象

es6 Iterator和for...of循环的更多相关文章

  1. ES6(Iterator 和 for...of 循环)

    Iterator 和 for...of 循环 1.什么是 Iterator 接口 Iterator 接口功能:用一种相同办法的接口让不同的数据结构得到统一的读取命令的方式 2.Iterator的基本用 ...

  2. es6 -- Iterator 和 for...of 循环

    1:Iterator(遍历器)的概念 JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还 ...

  3. ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

    ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. va ...

  4. es6笔记(6) Iterator 和 for...of循环

    概要 js中的数组.对象,加上ES6中增加的Map.Set四种数据集合. Iterator提供了一种机制,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍 ...

  5. ES6的新特性(14)——Iterator 和 for...of 循环

    Iterator 和 for...of 循环 Iterator(遍历器)的概念 JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Ma ...

  6. 14 Iterator和for...of循环

    Iterator和for...of循环 首先 Iterator 是一个接口. 标准是 function makeIterator(array) { var nextIndex = 0; return ...

  7. 14.Iterator 和 for...of 循环

    Iterator 和 for...of 循环 Iterator 和 for...of 循环 Iterator(遍历器)的概念 JavaScript 原有的表示"集合"的数据结构,主 ...

  8. Iterator和for...of循环

    Iterator和for...of循环 Iterator(遍历器)的概念 数据结构的默认Iterator接口 调用Iterator接口的场合 字符串的Iterator接口 Iterator接口与Gen ...

  9. java中的Iterator与增强for循环的效率比较

    最近在优化代码时遇到了这个问题:Iterator与增强for循环到底哪个效率高?之前在学习的时候,好像记着老师说过遍历集合(如list)时,使用iterator好像正规一些,因为是专用的,但是运行效率 ...

随机推荐

  1. js中cookie设置、获取与清除

    // 设置cookie setCookie (cname, cpwd, exdays) { var exdate = new Date()// 获取时间 exdate.setTime(exdate.g ...

  2. 大疆无人机 Android 开发总结——视频解码

    DJI_Mobile_SDK是大疆为开发者提供的开发无人机应用的开发接口,可以实现对无人机飞行的控制,也可以利用无人机相机完成一些视觉任务.目前网上的开发教程主要集中于DJI 开发者社区,网上的资源非 ...

  3. 打通 DevOps 任督二脉 ,CODING 2.0 制品库全新上线

    CODING 在近期的 KubeCon 2019 大会上发布了 CODING 2.0,同时发布了最新功能--制品库.CODING 不断完善 DevOps 工具链,旨在持续提升研发组织软件交付的速度与质 ...

  4. 更新阿里yum源并重建缓存

    [第一种方式]1.下载安装wget /如果没有装的话yum install -y wget 2.备份默认的yummv /etc/yum.repos.d /etc/yum.repos.d.backup ...

  5. Python的标准库介绍与常用的第三方库

    Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...

  6. 基于 CAS 无锁实现的 Disruptor.NET 居然慢于 BlockingCollection,是真的吗?

    StackOverflow 有人说自己的Disruptor.NET 代码比 BlockingCollection 还有慢 2 倍,并且把完整代码贴出,楼下几个老外也的回复说了一堆,但是没研究出个所以然 ...

  7. Yii2 中常用的增删改查操作总结

    一.新增 1.使用save() $model = new User(); $model->name = 'test'; $model->phone = '13000000000'; $mo ...

  8. SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架

    一.背景 前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础.SpringBoot使编码配置部署都变得简单,越来越多的互联网公司已经选择SpringBoot作为微服务的入门级微框 ...

  9. Windows10安装ubuntu16.04双系统教程

    写在前面:本教程为windows10安装ubuntu16.04(64位)双系统教程,是我多次安装双系统的经验总结,安装方法同样适用于ubuntu18.04(64位).为了直观和易于理解,我会尽量图文并 ...

  10. 自己开发的网站压力测试(阿里云1M带宽)

    背景 项目采用微服务架构设计,独立商城系统,博客系统,搜索系统,sso单点系统部署在docker环境下 商城系统(django) 博客系统(flask) 搜索系统(es+flask+restful) ...