闭包:是指有权访问另外一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部创建另外一个函数。

在javascript中没有块级作用域,一般为了给某个函数申明一些只有该函数才能使用的局部变量时,我们就会用到闭包,这样我们可以很大程度上减少全局作用域中的变量,净化全局作用域。

闭包的好处:

不增加额外的全局变量,

执行过程中所有变量都是在匿名函数内部。

使用闭包有如上的好处,当然这样的好处是需要付出代价的,代价就是内存的占用。



//闭包的基本写法:
(function(){do someting})();
//这个你就理解为定义一个匿名函数并立即执行
//带参数的话就这样:
(function(形参){do someting})(实参);



(function($){
$("div p").click(function(){alert("cssrain!")});
})(jQuery); //一个闭包
就是等于
function tempFunction($){ //创建一个以$为形参的函数
$("div p").click(....);
}
tempFunction(jQuery); //传入实参jQuery执行函数.



//变量的作用域
function bobo() {
var a = 1; //只在bobo函数体中有效
b = 1; //声明了一个全局变量,在整个<script>块中有效
function boboSub() { //声明一个函数,它只在bobo函数中有效
var c = 1; //只有boboSub函数声中有效
c = c + a; //子函数中可以使用上级函数的变量
}
}


 


此随笔或为自己所写、或为转载于网络。仅用于个人收集及备忘。