MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

原始迭代协议

警告:传统迭代协议是一个SpiderMonkey特性, 并且在将来可能会被移除。请使用for..of 循环与迭代协议

废弃的Firefox专属迭代协议

Firefox在version 26版本生效的与ES2015迭代协议相似的另一种迭代协议。以下统称为旧迭代协议。

旧迭代器对象在使用next()方法时,会在循环到最后时抛出StopIteration

属性 描述
next 一个会返回值的无参数函数

旧迭代器与ES2015迭代器的区别

  • 旧迭代器在调用next的时候立即返回相应的值而不会返回一个代理对象。
  • 循环遍历中通过抛出StopIteration对象结束循环。

旧迭代器协议示例

function makeIterator(array){
    var nextIndex = 0;

    return {
       next: function(){
           if(nextIndex < array.length){
               return array[nextIndex++];
           else
               throw new StopIteration();
       }
    }
}

var it = makeIterator(['yo', 'ya']);

console.log(it.next()); // 'yo'
console.log(it.next()); // 'ya'
try{
    console.log(it.next());
}
catch(e){
    if(e instanceof StopIteration){
         // iteration over
    }
}

参见

文档标签和贡献者

 此页面的贡献者: lsvih
 最后编辑者: lsvih,