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. SAP-BP 创建客商(摘抄)

    FORM frm_bp02 . * 更改供应商所需变量 DATA:l_xfeld TYPE xfeld, "复选框 ls_data TYPE vmds_ei_main, "供应商总 ...

  2. C#DataTable转List<T>互转

    using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespac ...

  3. SpringBoot+idea搭建微服务简化流程

    作者:个人微信公众号:程序猿的月光宝盒 1.新建普通maven工程 2.在父级pom中按需修改 3.删除父级src目录 4.创建公共模块common,里面只有service接口和实体类 5.构建微服务 ...

  4. Create a Report at Runtime 在运行时创建报表

    In this lesson, you will learn how to create reports at runtime. A report showing a list of Tasks wi ...

  5. Kotlin版Aspect入门篇

    介绍: AspectJ是一个面向切面编程的一个框架,它扩展了java语言,并定义了实现AOP的语法.在将.java文件编译为.class文件时默认使用javac编译工具,AspectJ会有一套符合ja ...

  6. Redis & memcached PK

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  7. 冒泡排序(C语言)

    # include<stdio.h> int main(void) { int arr[10]={5,4,7,9,2,3,1,6,10,8}; //定义一个位排序的数组 int i; // ...

  8. Cisdem OCRWizard for Mac 使用教程

    Cisdem OCRWizard for Mac是一款macOS平台的的文件识别软件,可以对任何PDF.扫描文件或图像文件(包括名片的照片)进行OCR识别,支持超过40种语言,帮助我们提高效率.现在小 ...

  9. 手机投屏工具与HOSTS切换工具

    ApowerMirror windows -->switchhosts

  10. Python 变量与运算符

    变量 基本概念: 1. 变量,名字,数据的唯一标识2.变量命名: 字母.数字.下划线: 不能以数字开头: 区分大小写: 不能使用保留字和关键字: 命名要有意义:(多个单词时,推荐使用下划线连接) 3. ...