註意,閉包的原理是作用域鏈,所以閉包訪問的上級作用域中的變量是個對象,其值為其運算結束後的最後壹個值。
優點:避免全局變量汙染。缺點:容易造成內存泄漏(變量都被保存在內存中)。
閉包的使用場景:封裝組件,函數引用類型,定義私有數據
特性:
a. JavaScript允許妳使用在當前函數以外定義的變量
b. 即使外部函數已經返回,當前函數仍然可以引用在外部函數所定義的變量
c. 閉包可以更新外部變量的值
d. 用閉包模擬私有方法
由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題
例子: