js閉包的理解

js閉包的理解

閉包是js中的一個特點也是一個知識難點,在定義一個全域性變數的時候,如果在不知道前面的程式碼的情況下,不小心定義了同一個變數名,則前面的程式碼執行結果會受到影響,為了避免這種影響,於是就有了閉包。
閉包可以解決全域性變數汙染的問題,特點是在一個函式中宣告變數(此時的變數是區域性變數,不影響全域性變數),同時在該函式中再定義一些函式,閉包的特點就是函式套函式:在閉包中宣告變數,裡面的值不會受到函式外的同名變數影響,但閉包的缺點是記憶體洩漏。
程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩漏似乎不會有大的影響,但記憶體洩漏堆積後的後果就是記憶體溢位(記憶體不夠用)。
函式只有在呼叫時會發揮作用,不呼叫是會被釋放記憶體的;但是看到上面的閉包函式作為一個值給了一個全域性變數,這種情況下是清不掉的,這就造成記憶體洩露。
這樣的閉包函式多了,最後的結果就是記憶體溢位。