如何迭代迭代器?

正如此处所述,所有 ES6 迭代器都是可迭代的(因此,您可以向它们申请 for-of 等)。考虑以下简短的演示,我试图弄清楚为什么我无法迭代it并得到TypeError: it is not iterable错误。


var counter ={

   [Symbol.iterator](){

      var start=0, end=10, step=1;

      var current = start; 


      return {

        next(){

          var done = current > end;

          if(done) return {value: undefined, done: true};        

          var res = {value: current, done: false};

          current += step;

          return res;

      }

    }

  }

}

  


var it = counter[Symbol.iterator]();


for(let t of it){

  console.log(t)

}


任何帮助表示赞赏。


繁华开满天机
浏览 120回答 3
3回答

一只甜甜圈

该语句没有说“所有迭代器都是可迭代的”,而是“ ES6 中内置的所有迭代器都继承自IteratorPrototype并因此是可迭代的”。您的自定义迭代器{next(){…}}是一个普通对象并且不可迭代,因为它没有(或继承)Symbol.iterator属性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript