function makeIterator(array) {
var nextIndex = 0;
return {
next: function() {
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{value: undefined, done: true};
}
};
}
var it = makeIterator(['a', 'b']);
it.next() // { value: "a", done: false }
it.next() // { value: "b", done: false }
it.next() // { value: undefined, done: true }
这段代码的功能是创建一个迭代器,但是有一点我想不通。 var it = makeIterator(['a', 'b']); 执行完这条语句之后, it 是一个对象,对象里面有一个 next 方法
{
next: function () {
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{value: undefined, done: true};
}
}
然后当执行 it.next()的时候,为什么这个方法可以访问 nextIndex 和 array 这两个值?按我的理解执行函数的时候只有通过参数才能传值,应该这样使用 it.next(nextIndex,array)才能执行函数才对? 我是一个 C 程序员,最近在学习 Javascript 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.