Javascript闭包示例介绍


复制代码代码如下所示:
functionsay667(){
Varnum = 666;
varsayalert =函数(){ alert(努姆);}
数字+;
returnsayalert;
}

varsayalert = say667();
SayAlert();



复制代码代码如下所示:
FunctionsetUpSomeGlobals(){
Varnum = 666;
galertnumber =函数(){ alert(努姆);}
gincreasenumber =函数(){数+ +;}
gsetnumber =函数(x){ Num = x;}
}

(setupsomeglobals) / /分配;三全局变量
galertnumber(); / / 666
GIncreaseNumber();
galertnumber(); / / 667
(12)gsetnumber;
galertnumber(); / / 12



复制代码代码如下所示:
functionbuildlist(列表){
varresult = { };
为(变量= 0;i < list.length;i++){
variteml = 'Item' +表{我};
result.push(函数(){ alert(项目++表{我});});
}
returnresult;
}

functiontestlist(){
varfnlist = buildlist({1,2,3});
对于(varj = 0;J < fnlist.length;j++){
fnlist {,}();
}
}



复制代码代码如下所示:
FunctionsayAlice(){
varsayalert =函数(){ alert(爱丽丝);}
varalice = 'helloalice;
returnsayalert;
}

varhelloalice = sayalice();
helloalice(); / / helloalice



复制代码代码如下所示:
FunctionnewClosure(somenum,someref){
somenum Varnum =;
varanarray = {1,2,3};
varref = someref;
回报函数(x){
x;
AnArray.push(努姆);
警报('num:+数字+ 一个+ anarray.tostring()+ref.somevar + ref.somevar);
}
}

closure1 = newclosure(40,{ somevar:'closure1});
closure2 = newclosure(1000,{ somevar:'closure2});

(5)closure1;
closure2(- 10);