function a(){
var b = 10;
return function c(){
b++;
console.log(b);
}
}
var nn = a();
nn();
nn();
上述代码为简单的闭包
闭包简单来说就是函数里面套函数,函数内部直接或者间接返回一个函数 , 内部函数访问外部函数的变量 , 用上述代码说明
变量nn接收的是外部函数a的返回值-->内部函数c(函数c为函数a的闭包函数) , nn()调用的时候,执行函数c中的代码 , b++在自身中没有找就上一级作用域 var b = 10 ; 访问函数内部私有变量b , 不需要在全局中占一位的全局变量 ,不污染全局,依靠闭包函数访问其私有变量 , 同时在外部多次调用,每次调用形成新的局部作用域 , 互相不受影响(第一次调用nn输出11 , 接着再次调用输出12) , 但是若多次调用缓存数据会造成内存泄漏不参与垃圾回收机制,一个不会销毁的函数空间