js闭包学习

在一个函数outter内部定义了另一个函数inner,而inner又引用了outter作用域内的变量,在outter之外使用了inner函数,则形成了闭包。
示例一:
function outter(){
var n = 0;
return function(){
return ++n;
}
}
var fun = outter(); //将outter()执行结果【即,function(){return ++n;}】保存在变量fun中,所以outter函数中的n也没有在outter执行后销毁
alert(fun()); //执行的是outter函数返回的函数,即里面的匿名函数 ,执行结果 为弹出弹出框显示“1”
alert(fun()); //执行结果为弹出框显示“2”,因为n没有销毁,所以n的值经过上一条执行后保存的值为1
alert(outter()()); //执行结果为弹出框显示“1”
alert(outter()()); //执行结果为弹出框显示“1”,因为每次执行完outter()()后,outter的变量都会销毁

学习的链接:
http://www.ibm.com/developerworks/cn/web/1006_qiujt_jsfunctional/

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复