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'