一个关于作用域 闭包相关的问题 --JS
高洛峰
高洛峰 2016-11-02 13:06:26
0
1
500

我创建了两个变量,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};
        }
      };    
}


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(1)
三叔

return {}//{}是对象字面量创建方式,这是一个新的对象了。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!