1. 程式人生 > >什麼是閉包。講述閉包的用處、特性、優點、缺點;

什麼是閉包。講述閉包的用處、特性、優點、缺點;

1、變數作用域

要理解閉包,首先要理解javascript的特殊的變數作用域。

變數的作用域無非就兩種:全域性變數和區域性變數。

javascript語言的特別之處就在於:函式內部可以直接讀取全域性變數,但是在函式外部無法讀取函式內部的區域性變數。

注意點:在函式內部宣告變數的時候,一定要使用var命令。如果不用的話,你實際上宣告的是一個全域性變數!

2、什麼是閉包

閉包就是能夠讀取其他函式內部變數的函式。

在本質上,閉包是將函式內部和函式外部連線起來的橋樑。

3、閉包特性

封閉性:外界無法訪問閉包內部的資料,如果在閉包內宣告變數,外界是無法訪問的,除非閉包主動向外界提供訪問介面; 永續性:一般的函式,呼叫完畢之後,系統自動登出函式,而對於閉包來說,在外部函式被呼叫之後,閉包結構依然儲存在。

4、閉包特性

缺點:由於閉包攜帶包含它函式的作用域,因此比其他函式佔用的記憶體更多,洩露記憶體;

優點:減少建立全域性變數 減少傳遞給函式的引數量