闭包,官方对闭包的解释是:
一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分
个人理解:
当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包(函数套函数|定义在一个函数内部的函数)
用途(作用,副作用):
当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会污染全局的变量时,就可以用闭包来定义这个模块。
副作用 闭包不会释放变量,占内存
好处 可以读取函数内部的变量, 让这些变量的值始终保持在内存中
实例
eg1:function A(){
var count = 0;
function B(){
count ++;
console.log(count);
}
return B;
}
var C = A();
C();// 1
C();// 2
C();// 3
eg2:
(function(document){
var viewport;
var obj = {
init:function(id){
viewport = document.querySelector("#"+id);
},
addChild:function(child){
viewport.appendChild(child);
},
removeChild:function(child){
viewport.removeChild(child);
}
}
window.jView = obj;
})(document);
网友评论