正如此处所述,所有 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)}任何帮助表示赞赏。
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
该语句没有说“所有迭代器都是可迭代的”,而是“ ES6 中内置的所有迭代器都继承自IteratorPrototype
并因此是可迭代的”。您的自定义迭代器{next(){…}}
是一个普通对象并且不可迭代,因为它没有(或继承)Symbol.iterator
属性。
添加回答
举报
0/150
提交
取消