假如你相识过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();
}