1. 程式人生 > >js比閉包

js比閉包

能夠 抽象 存在 function cti result 垃圾回收機制 一個 java

種專業文獻上的“閉包”(closure)定義非常抽象,很難看懂。我的理解是,閉包就是能夠讀取其他函數內部變量的函數。因為b被a引用,a又被c引用,說以使得f1和f2不被gc回收,得以永久存在

 function f1(){

    n=999;

    function f2(){
      alert(n);
    }

    return f2;

  }

  var result=f1();

  result(); // 999

Javascript的垃圾回收機制

在Javascript中,如果一個對象不再被引用,那麽這個對象就會被GC回收。如果兩個對象互相引用,而不再被第3者所引用,那麽這兩個互相引用的對象也會被回收。因為函數a被b引用,b又被a外的c引用,這就是為什麽函數a執行後不會被回收的原因。

js比閉包