使用JavaScript 对Cookie 操作的封装
2010-01-08 00:00:00 来源:WEB开发网闭包产生的原因是因为作用域的不同,子作用域引用了父作用域的变量,而返回子作用域,父作用域按理来说执行完毕后该销毁掉了,只是子作用域一直存在,且一直握有父作用域的引用,所以才一直保留.
来看下面的代码
1 function parent() {
2 var a = 1;
3 function child(){
4 var b = 2;
5 alert(a);
6 alert(b);
7 }
8 }
父函数 parent 中包含了一个 child 子函数,在子函数中有一个对父函数中 a 变量的引用(输出其值).
我们来让父函数执行完后返回其声明的子函数
1 function parent() {
2 var a = 1;
3 function child(){
4 var b = 2;
5 alert(a);
6 alert(b);
7 }
8 return child;
9 }
10 var t = parent();
11 t();
在10行中, 我们执行了parent 函数,返回了在函数内部声明的函数 child,这时变量 t 持有该返回对象(此时是一个可以执行的函数)的引用,在11行代码中我们调用了它.结果分别输出了 1 和 2.
注意,输出 2, 是因为我们在子函数体内声明了一个变量,而输出 1, 我们在该函数体内并没有相应的定义变量 a ,而是发生了对父函数里的变量的引用,也就是说引用了父作用域的变量.
而此时又能能够完成输出的,也就是说变量 a 还存在.可是我们无法直接对其引用 (比如 parent.a),因为函数已经执行完毕,没有了其相应的引用,我们只能通过所返回的子函数的引用来进行访问.
Tags:使用 JavaScript Cookie
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接