关于for of 循环和Iterator(遍历器)过程的分析

关于for of 循环和Iterator(遍历器)过程的分析

for of 循环是专门用来遍历带有遍历器接口的数据结构(带有遍历器的数据结构有数组、字符串、Set和Map结构、类数组对象等)。那么它的运行流程是什么呢?下面就举一个例子来研究一下。

		let obj = {
            value:['a','b','c']
          }
          obj[Symbol.iterator] = function(){
            let i = 0;
            this.next = function(){
              if(i<this.value.length){
                 i++;
                 console.log(i);
                return {
                    value:this.value[i-1],
                    done:false
                }

              }
              return {done:true};
            }
            return this;
          }
          for(let k of obj){
            console.log(k);
          }
输入结果为
//1 a 2 b 3 c

上面的例子是一个对象部署了Iterator接口的例子,由上面可得出:
1.for of 循环首先调用Iterator方法获取返回对象,此对象不能省略,此对象必须有next方法,next方法返回一个包含value和done两个属性的对象;
2.调用Iterator返回的对象的next方法进入循环输出。
3.遇到返回为{done:true}时终止。
上面是自己用来理解for of循环便于记忆的,可能有不对之处,望理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值