我创建了两个变量,it、is,那么为什么这两个变量由一个函数创建,(没有调用new)但是nextIndex互不影响呢?而且函数中的nextIndex变量还不会被销毁,是因为闭包的影响吗?
var it = makeIterator(['a', 'b']); it.next() var is = makeIterator(['a', 'b', 'c']); console.log(is.next())// { value: "a", done: false } console.log(it.next())// { value: "b", done: false } function makeIterator(array) { var nextIndex = 0; return { next: function() { return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done: true}; } }; }
return {}//{}是对象字面量创建方式,这是一个新的对象了。