java程式設計師理解js中的閉包

lonecloud發表於2017-09-04

1.閉包概念:

  就是函式內部通過某種方式訪問一個函式內部的區域性變數

  再次理解:

    閉包產生原因:

      1.內部函式引用了外部函式的變數

    作用:延長區域性變數的生命週期

       讓函式外部可以呼叫到函式內部的資料

       利用此可以進行對內部資料進行封裝操作

       封裝自定義模組

    產生時間:

      外部函式被定義的執行完後產生的閉包

    死亡:

      巢狀的內部函式變成了垃圾回收物件的時候

2.Java中的類似操作

public class Demo{
     private static String a;      

     public static String getA(){
         return a;
    } 
}

Demo demo=new Demo();    
//在這裡需要訪問demo中的a屬性怎麼辦?
demo.a;//會報錯
demo.getA();//可以

3。javaScript中的操作

function Demo(){
     var a=10;

     function getA(){
        return a;
    }
   return getA; 
}
//我需要訪問a這個變數怎麼辦??
alert(a);//報錯
alert(Demo().getA());//結果10

看上面兩個例子,其實就是差不多可以理解閉包啦,相當於說Java獲取類內部的私有的static變數

  

相關文章