這個函數是用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 }
這個函數中調用next方法后,為什么還存在上次調用next時存在的i值?
慕少森
2019-03-01 18:23:34