- 如何形成闭包呢 ? 只需要把它们升级成为全局变量,不使用(var)语句,或把里面的函数传递给(返回 retrun)给全局空间即可。
- 事使上,没个函数都可以认为是一个闭包,因为每个函数都在其所在域,维护某种私有关系,只不过在执行完函数体后被销毁了 ,而返回函数后 函数体不会被销毁 。
- 如果一个函数返回了一个子函数, 那么这个子函数就会保留对父元素的链接。
- 子函数所绑定的是父函数的作用域本身,而不是在函数定义时该作用域中的变量或变量当前所返回的值
例:
function F(param){
varN = function(){
return param};
param= param+100;
return N}
var inner()=F(123)// inner();223
5.闭包中 不会记住父元素中的值,它们所拥有的只是相关域在创建时的一个链接(即引用)。
6.要获取某个变量使,它会从所在域开始逐级寻找,离自己最近的 i 值。
例:function F(){
var arr = [],i;
for (i = 0; i<3 ;i ++){
arr[i] = function (){
return i;
};
return arr;}
var arr = F(); //arr[0]()=3; arr[1]()=3; arr[2]()=3