js函式閉包

Syyyyy_發表於2019-03-15

閉包的好處:
希望一個變數長期駐紮在記憶體當中;
避免全域性變數的汙染;
私有成員的存在;

舉例:

 function f1(x){
           var a=1;
           return function f2(y){
               console.log(x+y+(a++));
               console.log(a);
           }
           
       }
       var b=f1(2);//x=2;
       b(10);
       //相當於b=f2 b()=f2(),故y=10;;

匿名函式:

(function(){});
();

該方法經常在全域性作用域中被用在函式外部,從而限制向全域性作用域中新增過多的變數和函式影響全域性作用域。也可以減少如閉包這樣的對記憶體的佔用,由於匿名函式沒有變數指向,執行完畢就可以立即銷燬其作用域鏈。
而js一個最大的好處也是奇特之處之一,就是函式可以直接讀取全域性變數;
而閉包,簡單來說就是能夠讀取別的函式內部變數的函式,相當於內部函式與外部函式的一座橋樑,同時,子函式的變數會被一層層的向上級尋索,故父函式中所有變數都是子集可以獲取到的,反之不成立。

相關文章