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. SpringMVC架构模拟

    这次来学习一下SpringMVC的源码. 对于常见的项目架构模式,比如大名鼎鼎的SSM(SpringMVC,Spring,Mybatis)框架. SpringMVC ->web层(Control ...

  2. 遇见手绘花卉小清新简约通用PPT模板推荐

    模版来源:http://ppt.dede58.com/jiaoxuekejian/26484.html

  3. spring4 学习4 spring MVC+mybatis+Mysql

    在前面搭建的基础上,引入新的jar包如下: aopalliance-1.0.jaraspectjweaver-1.8.8.jarmybatis-3.3.0.jarmybatis-spring-1.2. ...

  4. phpstudy漏洞检测

    后门检测脚本 # !/usr/bin/env python # -*- coding:utf-8 -*- import gevent from gevent import monkey gevent. ...

  5. IS guide:Eric Steven Raymond in《How To Become A Hacker》

    Learn how to program.This, of course, is the fundamental hacking skill. If you don't know any comput ...

  6. SpringBoot项目下的JUnit测试

    在SpringBoot项目里,要编写单元测试用例,需要依赖4个jar.一个是最基本的JUnit,然后是spring-test和spring-boot-test. <!--test--> & ...

  7. Tornado 框架

    Tronado为何物 Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使 ...

  8. PHP计算二维数组指定元素的和

    array_sum(array_column($arr, 'num')); //计算二维数组指定元素的和 $arr = [ [ 'id'=>1, 'num'=>3, ], [ 'id'=& ...

  9. Appium(一):java环境、AndroidSDK环境

    1. java环境 java的下载和安装可以看我以前写的Java基础:<java下载和安装>. 2. AndroidSDK环境 2.1 AndroidSDK下载 我们进入:https:// ...

  10. ansible+playbook 搭建lnmp环境

    用三台机器 做ansible+playbook 搭建lnmp环境 IP分配 ansible 主机192.168.202.132 lnmp第一台主机 192.168.202.131 lnmp第一台主机 ...