vue學習 生命週期,元件
阿新 • • 發佈:2020-08-13
閉包
什麼是閉包???
- 官方解釋:閉包是指有權訪問另一個函式作用域中的變數的函式
- 個人理解:
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();