JavaScript ——內部函數和匿名函數

 在JS中,函數是一種數據類型,能夠將它賦值給變量,所以函數能夠這樣建立:閉包

1 var func=function(){
2       alert("func");      
3 }
4 func();

既然函數是一種數據類型,那麼一樣能夠將函數做爲另外一個函數的返回值:函數

1 var func=function(data1){
2     return function(data2){
3         alert(data1+"這是一個內部匿名函數,被返回給變量func    "+data2);
4     }
5 }
6 func(1)(2);   

運行結果:「1這是一個內部匿名函數,被返回給變量func  2」spa

上面代碼中,func()()彷佛有些奇怪,其實還有另外一種形式:code

1 var func=(function(){     
2     return function(){
3          alert("這是一個內部匿名函數,被返回給變量func");
4      }
5 })();
6 func();

運行結果:「這是一個內部匿名函數,被返回給變量func   2」      注:由於最外層的function是一個匿名函數且沒有賦值給其餘變量,所以沒法傳值調用。blog

結合這兩種狀況,會發現其實fun()()等價於(function(){return function(){alert ("這是一個內部匿名函數");}})()。ip

理解清楚這一點,對於JavaScript中的閉包的理解會有好處!io

相關文章
相關標籤/搜索