闭包能够读取其他函数内部变量的函数。或简单理解为定义在一个函数内部的函数,内部函数持有外部函数内变量的引用。函数执行形成的私有作用域,保护里面的变量不受外界干扰的机
var counter = (function(){
var privateCounter = 0; //私有变量
function change(val){ privateCounter += val; }
return {
increment:function(){ //三个闭包共享一个词法环境
change(1);
},
decrement:function(){
change(-1);
},
value:function(){
return privateCounter;
}
};
})();
console.log(counter.value());//0
counter.increment();//1
counter.decrement();//0