闭包函数:
闭包是以 匿名函数的形式来实现。
a. 匿名函数:没有实际名字的函数。
- console.log(typeof function(){});// "function"
- console.log(typeof function(x,y){return x+y;});// "function"
- console.log(typeof new Function("x","y","return x*y;"))// "function"
var fn = function(){return 0;}; 匿名函数赋值给fn,fn是一个函数变量
b.闭包函数是:函数的嵌套,内层的函数可以使用外层函数的所有变量。
function outer(a){
var inner = function(){
return a+1;
};
return inner;
}
var a = 1;
var c = outer(1);
c();//2
1、内部函数inner使用了外部函数的变量。
2、outer的返回值inner是一个函数
3、使用的时候直接加()调用即可
闭包函数好处:
1. 保护函数的内部变量安全
2. 在内存中维持一个变量,防止被垃圾回收
function outer(a){
var inner = function(){
a+=1;
return a;
};
return inner;
}
var a = 1;
var c = outer(a);
c();//2
var b = 1;
var d = outer(b);
d();//2
c();//3
c();//4
d();//2