这篇文章主要介绍了多个javascript闭包入门示例,理解了这几个例子,对于闭包,应该可以算是入门了,需要的朋友可以参考下
1. 复制代码 代码如下: functionsay667(){ varnum=666; varsayAlert=function(){alert(num);} num++; returnsayAlert; }
varsayAlert=say667(); sayAlert();
2. 复制代码 代码如下: functionsetUpSomeGlobals(){ varnum=666; gAlertNumber=function(){alert(num);} gIncreaseNumber=function(){num++;} gSetNumber=function(x){num=x;} }
setUpSomeGlobals();//为三个全局变量赋值 gAlertNumber();//666 gIncreaseNumber(); gAlertNumber();//667 gSetNumber(12); gAlertNumber();//12
3. 复制代码 代码如下: functionbuildList(list){ varresult=[]; for(vari=0;i<list.length;i++){ variteml='item'+list[i]; result.push(function(){alert(item+''+list[i]);}); } returnresult; }
functiontestList(){ varfnlist=buildList([1,2,3]); for(varj=0;j<fnlist.length;j++){ fnlist[j](); } }
4. 复制代码 代码如下: functionsayAlice(){ varsayAlert=function(){alert(alice);} varalice='HelloAlice'; returnsayAlert; }
varhelloAlice=sayAlice(); helloAlice();//HelloAlice
5. 复制代码 代码如下: functionnewClosure(someNum,someRef){ varnum=someNum; varanArray=[1,2,3]; varref=someRef; returnfunction(x){ num+=x; anArray.push(num); alert('num:'+num+'\nanArray'+anArray.toString()+'\nref.someVar'+ref.someVar); } }
closure1=newClosure(40,{someVar:'closure1'}); closure2=newClosure(1000,{someVar:'closure2'});
closure1(5); closure2(-10);
|