浅析ES6中的iterator
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”来判断遍历结束的,就形成死循环,不断遍历第一个值。
路漫漫其修远兮,吾将上下而求索。
May stars guide your way⭐⭐⭐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步