1. 程式人生 > 實用技巧 >vue學習 生命週期,元件

vue學習 生命週期,元件

閉包

什麼是閉包???

  • 官方解釋:閉包是指有權訪問另一個函式作用域中的變數的函式
  • 個人理解:
    1.函式A返回函式B,函式B中操作函式A中的變數,執行函式A將返回的函式B賦值給全域性變數。
    2.因為函式B使用了函式A中的變數,函式A執行完後,不會銷燬,實現B函式的多次使用
    3.函式A的變數外部不能呼叫,所以實現了變數的私有

閉包的特點

  • 函式巢狀函式
  • 函式內部可以引用外部的引數和變數
  • 函式外不能訪問函式內的引數和變數
  • 引數和變數不會被垃圾回收機制回收

閉包的目的

  • 希望一個變數長期駐紮在記憶體中
  • 避免全域性變數的汙染
  • 私有成員的存在

缺點

  • 由於函式不自動銷燬,會造成記憶體洩漏
function fn1(){
    var a=1;
    // 因為返回的函式被儲存在全域性變數中,
    // 並且這個返回的函式使用這個a的區域性變數,因此a被儲存在堆中
    return function(){
        a++;
        console.log(a);
    }
}

var f=fn1();
f()    // 2
f();   // 3

閉包封裝工具包

var Utils=(function(){
    var num=0;
       return {
           a:function(){
               num++;
               console.log(num);
           },
           b:function(){

           }
       }
   })();
   

   Utils.a();
   Utils.a();
   Utils.a();