古詩詞大全網 - 成語用法 - 什麽是閉包(closure),為什麽要用它?

什麽是閉包(closure),為什麽要用它?

閉包指的是壹個函數可以訪問另壹個函數作用域中變量。常見的構造方法,是在壹個函數內部定義另外壹個函數。內部函數可以引用外層的變量;外層變量不會被垃圾回收機制回收。

註意,閉包的原理是作用域鏈,所以閉包訪問的上級作用域中的變量是個對象,其值為其運算結束後的最後壹個值。

優點:避免全局變量汙染。缺點:容易造成內存泄漏(變量都被保存在內存中)。

閉包的使用場景:封裝組件,函數引用類型,定義私有數據

特性:

a. JavaScript允許妳使用在當前函數以外定義的變量

b. 即使外部函數已經返回,當前函數仍然可以引用在外部函數所定義的變量

c. 閉包可以更新外部變量的值

d. 用閉包模擬私有方法

由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題

例子: