JavaScript学习--闭包

1、作用域链

JavaScript与很多程序设计语言不同,它不存在大括号级的作用域,但它有函数作用域,也就是说,在函数内定义的变量在函数外是不可见的

2、闭包在Getter和Setter的应用

var getValue, setValue;

(function (){

  var secret = 0;

  getValue = function(){

    return secret;

  };

  setValue = function(x){

    secret = x;

  };

})()

利用函数getValue, setValue来确保局部变量secret的不可直接访问性

3、闭包在迭代器中的使用

下面是一个接受数组输入的初始化函数,我们在其中定义了一个私有指针,该指针会始终指向数组中的下一个元素。

function setup(x){

  var i = 0;

  return function(){

    return x[i++];

  }

}

现在只需调用setup函数,就会创建出我们所需要的next()函数,具体如下:

var next = setup(['a', 'b', 'c', 'd']);

next(); // 'a'

next(); // 'b'

next(); // 'c'

next(); // 'd'

posted on 2016-09-01 10:30  喵小菜  阅读(133)  评论(0编辑  收藏  举报

导航