1. 闭包特点
- 函数嵌套函数
- 内部函数使用外部函数的形参和变量,被调用的形参或变量就会常驻内存
- 被引用的形参和变量不会被垃圾回收机制回收
function aaa(num1) {
var num2 = 20;
function bbb() {
alert(num1+''+num2);
}
return bbb;
}
var res = aaa(10);
res();
2. 闭包的好处
- 变量常驻内存当中
- 避免全局变量被污染 避免生成全局变量,方便多人开发
- 可以声明私有变量,对外不可见,变量不会暴露出来,避免别人修改
避免全局变量污染
function aaa() {
var a=2;
function bbb() {
a++;
alert(a);
}
return bbb;
}
var ccc=aaa();
ccc();
ccc();
alert(a);//没有结果
设置私有变量和方法
/*
利用闭包进行私有方法和私有变量
*/
var modelA=(function(){
var count=1; //设置私有变量
//设置私有方法
function aaa(){
count+=2;
alert(count);
}
function bbb(){
count +=5;
alert(count);
}
//将方法返回出去,进行执行操作
return {
funa:aaa,
funb:bbb
};
})();
var modelB=(function(){
var count=10; //设置私有变量
//设置私有方法
function aaa(){
count*=2;