浅析ES6中的iterator
2024-08-27 06:04:42
1.iterator迭代器必须保证其遍历终止条件可控,否则会形成死循环
demo:
//会用到iterator接口的场合
//1.for...of循环
//2. ...解构表达式
const obj = {
data:['iphone','hw','ganlex'],
};
obj[Symbol.iterator] = function(){
let index = 0;
const self = this;
return {
next(){
return index<self.data.length?{ value:self.data[index],done:false }:{value:undefined,done:true};
}
};
}
for( let v of obj ){
console.log( v );
}
因为在next方法里忘记index++,导致永远无法return "{value:undefined,done:true}",而for...of底层是通过“done:true”来判断遍历结束的,就形成死循环,不断遍历第一个值。
最新文章
- awk命令简介
- 关于VS2010无法编译问题
- Android监听Home键
- SSIS包部署
- Web模板引擎本质前奏
- Oracle高版本导出dmp导入Oracle低版本报错:";不是有效的导出文件、头部验证失败";解决方法
- Linq to DataSet 和 DataSet使用方法学习
- proguard混淆jar文件
- Java对象与类中的一个小练习
- springmvc02
- HTML5——localStorage
- bxslider使用教程
- 多线程中join()的用法
- jquery的过滤学习
- Codeforces Round #404 (Div. 2)
- 基于Verilog的带FIFO写入缓冲的串口发送接口封装
- vue 中安装使用sass 报错遇到的问题整理
- HDU 2112 HDU Today 最短路
- Python入门之logging日志模块以及多进程日志
- 1001 A+B