🌺
摘要
js迭代器
迭代器
1.默认实现迭代器的有
- Map,Set,Array,定型数组,arguments,NodeList,字符串
const a = "abcd";
console.log(a[Symbol.iterator]);
console.log(a[Symbol.iterator]());
Iterable:迭代器协议
Iterator:迭代器接口
迭代器会阻止垃圾回收机制,因为迭代器维护着一个指向可迭代对象的引用
2.实现了迭代器的类型:
- 内部会有一个Symbol.iterator的工厂函数
- 调用这个工厂函数会生成一个新的迭代器
3.可以隐式的调用这个迭代器的结构有:
- for…of…
- 数组结构
- 扩展运算符
- Array.from
- 创建集合
- 创建映射
- Promise.all
- Promise.race
- yield*操作符
4.实现一个迭代器
[Symbol.iterator](){
return {
next(){
if(count<limit){
return {done:false,value:count++}
}else{
return {done:true,value:undefined}
}
}
}
}
5.提前终止迭代器
for…of…可以通过break,continue,return,throw提前退出
可以通过在迭代器身上增加return方法,返回一个{done:true}来提前终止,但是这种方法的并不是万能的,有的迭代器并不能终止,但是return()方法还是会被调用的
文章发表于 2024-04-15 16:00:00
作者:徐徐转载请注明出处