JS : 閉包的使用場景

有時候,我們需要得到函數內部的局部變量,但是前面講到,正常情況下,這是辦不到的,這個時候就用到了閉包。
**閉包就是能夠讀取其他函數內部變量的函數。**創建閉包的常見方式,就是在一個函數內部創建另一個函數。
實例1:

 var a = 10;
 function f1(){
   var b = 1000;
   function f2(){
     console.log(b);
   }
   return f2;
 }
 var f2 = f1();
 f2()
    

在上面的代碼中,函數f2被包括在函數f1內部,所以,函數f2可以讀取到函數f1中的局部變量。此時f2作爲一個函數,成爲返回值,那麼f2就叫做閉包。

閉包的用處:
1.可以讀取函數內部的變量;
2.讓這些變量保存在內存中。

但是閉包也會產生很多難易解決的問題,比如:

function f1(){
  var n = 999;
   nAdd = function(){
     n+=1;
   }
   function f2(){
     alert(n);
   }
   return f2;
 }
 var f2 = f1();
 f2();
 nAdd();
 f2();

如上,函數f1和f2始終在內存中,不會被垃圾回收機制回收。
故閉包的缺點有:
1. 使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包;
2. 閉包會在福函數外部,改變父函數內部的值,但是在使用的時候一定要小心。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章