iterator(迭代器)

iterator

  • 当一个对象实现了Symbol.iterator时,认为它是可迭代的。如array、map、set、string、int32Array、unit32Array等内置类型,目前都实现了各自的Symbol.iterator

  • 对象上的Symbol.iterator函数负责返回供迭代的值

  • for…of语句会遍历可迭代的对象,调用对象上的Symbol.iterator方法

    • 如:在数组上使用for…of遍历

      const array = [123, 'xcr', true];
      
      for (let item of array) {
          console.log(item)
      }
      // 123
      // xcr
      // true
      
  • for…of和for…in都可以迭代一个数组,但是区别很大,它们用于迭代器的返回值不同

    • for…of迭代的是对象的值

    • for…in迭代的是对象的键

      const arr = [123, 'xcr', true];
      
      for (let item in arr) {
          console.log( item)
      }
      // 0
      // 1
      // 2
      
      const arr = [123, 'xcr', true];
      
      for (let item of arr) {
          console.log( item)
      }
      // 123
      // xcr
      // true
      
  • for…in可以操作任何对象,提供了查看对象属性的一种方法

  • for…of关注迭代对象的值,内置对象Map和Set已经实现了Symbol.iterator方法

    • 将ts的代码目标设定为ES5,迭代器就只允许在array类型上使用。
    • 在非数组上使用for…of会报错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值