閉包的簡單理解
阿新 • • 發佈:2018-03-15
var ole ron urn 執行 全局 代碼 blog 內存
什麽是閉包?
簡單來說,閉包是指可以訪問另一個函數作用域變量的函數,一般是定義在外層函數中的內層函數。
(父函數包裹子函數,這個子函數中存在能夠訪問父函數中變量的引用,這個子函數就是閉包)
為什麽需要閉包?
局部變量無法共享和長久的保存,而全局變量可能造成變量汙染,所以我們希望有一種機制既可以長久的保存變量又不會造成全局汙染,在全局作用域中可以訪問到被保存在局部作用域的變量。
特點
- 占用更多內存
- 不容易被釋放
何時使用?
變量既想反復使用,又想避免全局汙染
如何使用?
1.定義外層函數,封裝被保護的局部變量。
2.定義內層函數,執行對外部函數變量的操作。
3.外層函數返回內層函數的對象,並且外層函數被調用,結果保存在一個全局的變量中。
代碼
function Fn(){ var xx = ‘aaa‘; return (function(){ return xx; })() } var xxFn = Fn(); console.log(xxFn) // --->‘aaa‘ ,這個xxFn就是局部變量中xx的引用
閉包的簡單理解