JS闭包
闭包
有权访问另一个函数作用域内变量的函数都是闭包,闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不能回收,因此可以用来封装一个私有变量
将函数内部和函数外部连接起来的一座桥梁
将变量的值始终保持在内存中
函数内部声明变量的时候,一定要使用var命令,否则就声明了一个全局变量
匿名函数本身也是一个闭包
父级作用域会影响子级,子级不会影响父级。
el:
function a(){
var n=0;
function inc(){
n++;
console.log(n);
}
return inc;
}
var c=a();
c();
c();
执行结果1,2
el2:
function a(){
var n=3.14;
function inc(r){
console.log(2*n*r);
}
return inc;
}
var c=a();
c(1);
c(2);
执行结果:6.28,12.56
el3: 闭包应该是和模块化相关的
function a(){
var n=3.14;
function inc(r){
console.log(2*n*r);
}
function inc2(r){
console.log(n*r*r);
}
return {inc2:inc2,inc:inc};
}
var c=a();
c.inc(3);
c.inc2(3);
执行结果:18.84,28.259999999999998