• es6 Iterator和for...of循环


    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对象

  • 相关阅读:
    postgresql 添加触发器
    postgresql 操作
    postgresql 更新自增变量
    java8 stream api 文件流甚是牛逼
    fastjson妙用
    idea中springboot内置tomcat控制台中文乱码解决
    linux中开放某个端口
    idea中application.properties文件防止中文汉字自动转换成unicode编码解决办法
    使用vue开源项目vue-framework-wz遇到的问题以及解决方案
    rsync的使用
  • 原文地址:https://www.cnblogs.com/jeff-zhu/p/11931532.html
Copyright © 2020-2023  润新知