1.闭包的概念
「函数」和「函数内部能访问到的函数作用域外的变量」的总和,就是一个闭包。
举例:
var a = '变量'
function x(){
console.log(a)
}
在函数内部可以访问的外部 a 变量 和 函数 x 的总和, 就是一个闭包。
2.闭包的用途
闭包通常用来创建内部变量,使得这些变量不能被外部随意修改,同时又可以通过指定的函数接口来操作。
举例:
var foo = (function(){
var secret = 'secret';
//[闭包]内的函数可以访问 secret 变量,而 secret 变量对于外部是隐藏的
return{
get_secret : function(){
//通过定义的接口来访问 secret
return secret;
},
new_secret : function(new_secret){
//通过定义的接口来修改 secret
secret = new_secret;
}
};
} () );
foo.get_secret(); // 得到 'secret'
foo.secret; //Type error ,访问不能
foo.new_secret('a new secret'); //通过函数接口,我们访问并修改了secret变量
foo.get_secret(); //得到 'a new secret'
网友评论