首先要知道JavaScript是使用垃圾回收的語言,它會每隔一段時間就會釋放記憶體進行閑置資源回收,像函式中的區域變數,函式執行時在內部使用了變數,堆疊記憶體會分配空間以保存相應的值,在函式使用結束后,這個區域變數就不需要了,占用的記憶體就會被釋放,
那我們若是想要使這個變數不被清理,一直處于被使用中,那就得讓他一直被參考,那么我們可以在一個函式里面嵌入一個函式,小函式里面參考大函式里的變數,并把這個函式回傳到全域中,此刻我們便可讓它不被清理并在全域中使用它了
放代碼:
1 function big(){//大函式 2 var savevar = 10;//資料 3 function little(){//小函式 4 return savevar;//參考大函式的資料,并把資料回傳出去 5 } 6 return little;//把小函式回傳出去 7 } 8 var deal = big();//呼叫大函式,回傳出來小函式 9 console.log(deal); // 回傳的是little()這個小函式函式,如果要訪問到num就需要呼叫這個函式 10 var money = deal(); //呼叫小函式,回傳出來小函式里操作的值 11 console.log(money) // 10,輸出
那平常使用閉包有什么好處呢?
優點:
- 作用域空間不銷毀,所以變數也不會被銷毀,增加了變數的宣告周期
- 在函式外部可以訪問函式內部的變數
- 護私有變數,將變數定義在函式內,不會污染全域
缺點:
- 因為函式外部可以訪問函式內部的變數,導致變數和內部的函式參考關系一直存在,記憶體不能銷毀,會一直占用,使用量較大時會導致記憶體溢位
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/518894.html
標籤:JavaScript
上一篇:每日演算法2:翻轉字串
下一篇:CesiumJs 簡單操作模型
