李才哥
Iterator 和 for...of 循环
原创
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
李才哥
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
Iterator 和 for...of 循环
Iterator 和 for...of 循环
原创
李才哥
关注
修改于 2021-02-24 17:55:17
338
0
修改于 2021-02-24 17:55:17
举报
文章被收录于专栏:
李才哥
李才哥
Iterator 和 for...of 循环
Iterator(遍历器)的概念
一种统一的接口机制,来处理所有不同的数据结构
为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作
一是为各种数据结构,提供一个统一的、简便的访问接口;
二是使得数据结构的成员能够按某种次序排列;
三是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费
默认 Iterator 接口
Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即for...of循环
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”
调用 Iterator 接口的场合
有一些场合会默认调用 Iterator 接口(即Symbol.iterator方法),除了下文会介绍的for...of循环,还有几个别的场合
对数组和 Set 结构进行解构赋值时,会默认调用Symbol.iterator方法。
扩展运算符(...)也会调用默认的 Iterator 接口。
yield*后面跟的是一个可遍历的结构,它会调用该结构的遍历器接口
for...of
Array.from()
Map(), Set(), WeakMap(), WeakSet()(比如new Map([['a',1],['b',2]]))
Promise.all()
Promise.race()
字符串的 Iterator 接口
字符串是一个类似数组的对象,也原生具有 Iterator 接口。
Iterator 接口与 Generator 函数
Symbol.iterator方法的最简单实现,还是使用下一章要介绍的 Generator 函数
遍历器对象的 return(),throw()
遍历器对象除了具有next方法,还可以具有return方法和throw方法
return方法的使用场合是,如果for...of循环提前退出
throw方法主要是配合 Generator 函数使用,一般的遍历器对象用不到这个方法
for...of
循环
一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员
for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
java
编程算法
javascript
node.js
数据结构
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
java
编程算法
javascript
node.js
数据结构
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
关注
文章
0
获赞
0
目录
Iterator(遍历器)的概念
一种统一的接口机制,来处理所有不同的数据结构
为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作
一是为各种数据结构,提供一个统一的、简便的访问接口;
二是使得数据结构的成员能够按某种次序排列;
三是 ES6 创造了一种新的遍历命令for...of循环,Iterator 接口主要供for...of消费
默认 Iterator 接口
Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即for...of循环
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”
调用 Iterator 接口的场合
有一些场合会默认调用 Iterator 接口(即Symbol.iterator方法),除了下文会介绍的for...of循环,还有几个别的场合
对数组和 Set 结构进行解构赋值时,会默认调用Symbol.iterator方法。
扩展运算符(...)也会调用默认的 Iterator 接口。
yield*后面跟的是一个可遍历的结构,它会调用该结构的遍历器接口
for...of
Array.from()
Map(), Set(), WeakMap(), WeakSet()(比如new Map([['a',1],['b',2]]))
Promise.all()
Promise.race()
字符串的 Iterator 接口
字符串是一个类似数组的对象,也原生具有 Iterator 接口。
Iterator 接口与 Generator 函数
Symbol.iterator方法的最简单实现,还是使用下一章要介绍的 Generator 函数
遍历器对象的 return(),throw()
遍历器对象除了具有next方法,还可以具有return方法和throw方法
return方法的使用场合是,如果for...of循环提前退出
throw方法主要是配合 Generator 函数使用,一般的遍历器对象用不到这个方法
for...of 循环
一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员
for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐