摘要:如果你了解过,那么你应该对比较熟悉了,但是你知道背后的原理是什么么吗首先调用集合的方法,紧接着返回一个新的迭代器对象。迭代器对象可以是任意具有方法的对象循环将重复调用这个方法,每次循环调用一次。
如果你了解过ES6,那么你应该对for...of比较熟悉了,但是你知道for...of背后的原理是什么么吗?
for...of首先调用集合的[Symbol.Iterator]()方法,紧接着返回一个新的迭代器对象。迭代器对象可以是任意具有.next()方法的对象;for ...of循环将重复调用这个方法,每次循环调用一次。举个例子,下面是最简单的迭代器:
var zerosForeverIterator={ [Symbol.iterator]:function(){ return this; }, next:function(){ return {done:false,value:0}; } }
我们可以写一个简单的for...of循环然后按照下面的方法调用重写被迭代的对象:
首先是for...of循环:
for(VAR of ITERABLE){ //一些语句 }
然后是一个使用以下方法和少许临时变量实现的与之前大致相当的示例:
var $iterator=ITERABLE[Symbol.iterator()]; var $result=$iterator.next(); while(!$result.done){ vAR=$result.value; //一些语句 $result=$iterator.next(); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81063.html
摘要:但是有了尾调用优化之后,递归函数的性能有了提升。常被用来检查对象中是否存在某个键名,集合常被用来获取已存的信息。循环解构对象本身不支持迭代,但是我们可以自己添加一个生成器,返回一个,的迭代器,然后使用循环解构和。 一、let和const 在JavaScript中咱们以前主要用关键var来定义变量,ES6之后,新增了定义变量的两个关键字,分别是let和const。对于变量来说,在ES5中...
摘要:迭代器模式顺序访问一个对象的对象的内部可分为内部迭代器和外部迭代器内部迭代器就是常见的或者外部迭代器实现了简单实现 迭代器模式 顺序访问一个对象的 对象的内部 可分为内部迭代器 和 外部迭代器 内部迭代器 就是常见的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...
摘要:迭代器是一种特殊对象,每一个迭代器对象都有一个,该方法返回一个对象,包括和属性。默认情况下定义的对象是不可迭代的,但是可以通过创建迭代器。在迭代器中抛出错误不再执行生成器返回语句生成器中添加表示退出操作。迭代器是一个对象。 迭代器(Iterator) ES5实现迭代器 迭代器是什么?遇到这种新的概念,莫慌张。 迭代器是一种特殊对象,每一个迭代器对象都有一个next(),该方法返回一个对...
阅读 1663·2021-10-09 09:44
阅读 3233·2021-09-27 13:36
阅读 1474·2021-09-22 15:33
阅读 1249·2021-09-22 15:23
阅读 1139·2021-09-06 15:02
阅读 1651·2019-08-29 16:14
阅读 2871·2019-08-29 15:26
阅读 2379·2019-08-28 18:08