javascript闭包

(1)作用域的好处是内部函数可以访问定义他们外部函数的参数和变量(或者全局变量).

(2)内部函数拥有比他的外部函数更长的生命周期.

示例:

View Code
    <script language="javascript" type="text/javascript">
function A(a){
return a;
}
function B(a){
return function(){
return a;
}
}
/*
因为A除了返回a外什么也没做,执行A函数时,调用堆栈被销毁
或者说调用"瞬间"产生了闭包,然后马上被销毁
*/
var x=A(10);
var y=B(20);
alert(x); //返回10
/*
B()函数调用结束时,局部变a的值并没有被销毁,由于返回的闭包里引用了B()调用域里的a的值,所以它并没有随着B()调用的结束而被销毁。
*/
alert(y()); //返回20
</script>
posted @ 2012-04-06 11:44  unbreakable  阅读(140)  评论(0编辑  收藏  举报