Iterator遍历接口

1.数据结构只要有Symbol.iterator函数就可遍历

     var array = ["a","b","c"];
     var iterator = array[Symbol.iterator]();
     console.log(iterator.next());//{ value: 'a', done: false }

2.原生的具有iterator接口的数据结构有
array
set
map
arguments
NodeList

3.使用到Symbol.iterator的情况

  • 解构赋值
  • 扩展运算符...
  • yield(yeild用来暂停和继续执行生成器函数,当外部调用生成器函数的next,yeild的右侧的表达式才会执行)
  • 可以覆盖原有的Symbol.iterator函数

4.遍历器对象的return(),throw()

  • 引发return()函数,发生在for...of中出现break,continue,throw new Error();

5.for...of for..in的区别

  • for...of必须部署了iterator接口后可使用
  • for...of只能够遍历有数字索引的属性
  • for..of可以识别32位的UTF-16字符
  • for...in的缺点
    1)数组的键名是数字,但是for...in循环是以字符串作为键名“0”、“1”、“2”等
    2)for...in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
    3)某些情况下,for...in循环会以任意顺序遍历键名

6.对于array,set,map的遍历函数
values( );
keys( );
entries( );//返回结果是[index, value];

7.对于没有iterator接口的对象可使用Array.from()转换成数组后进行遍历

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容