这个函数是用es5模拟es6的迭代器,问题是为什么每次next方法之后,还保存着上一次调用next方法后的i值,不是每一次都是重新调用这个函数的方法吗?
function createIterator(items) {
var i = 0;
return {
next: function () {
var done = (i >= items.length);
var value = !done ? items[i++] : undefined;
return {
done: done,
value: value
};
}
};
}
var iterator = createIterator([1, 2, 3]);
console.log(iterator.next()); //{ done: false, value: 1 }
console.log(iterator.next()); //{ done: false, value: 2 }
console.log(iterator.next()); //{ done: false, value: 3 }
console.log(iterator.next()); //{ done: true, value: undefined }
LEATH
MYYA
相关分类