遞迴和閉包

2022-01-28 16:05:15 字數 772 閱讀 1136

閉包

1.定義: 函式內部有函式(函式巢狀),內部函式操作外部函式的區域性變數,且外層函式的引用被賦值給變數,通過變數訪問內層函式匿名函式.

2.作用:1.可以讀取函式內部的變數,2.讓這些變數的值始終保持在記憶體中,不會在f1呼叫後被自動清除。

3.應用場景:迴圈繫結事件 .主要用於封裝jquery外掛程式,開發中用的少.

4.優點:避免變數汙染.

5.缺點:閉包會使得函式中的變數都被儲存在記憶體中,記憶體消耗很大,所以不能濫用閉包,否則會造成網頁的效能問題,在ie中可能導致記憶體洩露。解決方法是,在退出函式之前,將不使用的區域性變數全部刪除。

遞迴:定義:遞迴函式是在乙個函式通過函式名字呼叫自身的函式(函式自呼叫)。 

應用場景:維護table列表組建,做了乙個表頭篩選的功能。其中就需要獲取篩選項,當有多個篩選項陣列都需要從後台獲取的時候,就需要迴圈陣列傳送ajax請求,但是由於ajax是非同步的。多個請求就無法正常處理返回。 

所以使用遞迴,在ajax的**中重新呼叫他:

優點:簡潔,在遍歷演算法中,遞迴的實現明顯要比迴圈簡單得多

缺點:1.存在時間和空間的消耗,

2.呼叫棧可能會溢位.影響效能.

閉包與遞迴的區別: 

相同點:1)都是函式 

2)在函式的內部都會呼叫函式

不同點: 1)閉包函式呼叫的內部函式需要引用外部函式的變數、引數;遞迴函式是自己呼叫自己,不需要引用變數、引數 

2)閉包函式呼叫一次結束呼叫,遞迴函式在滿足遞迴條件時需要多次呼叫 

3)閉包函式會比其他函式更佔記憶體

閉包和遞迴

閉包是內部函式在其定義內部引用了內部變數,當乙個函式執行完,內部變數又被新函式引用 def count fs for i in range 1,4 deff return i i return fsf1,f2,f3 count 結果全部都是9,返回的函式又引用變數i 並沒有立即執行,而是等到3個函式...

閉包 遞迴和導包

閉包 定義 1.乙個函式可以定義在另乙個函式的內部 2.這個函式可以訪問外部函式的變數及引數 3.在這個函式的外部函式的外部呼叫這個函式的時候,就形成了閉包 作用 儲存函式的狀態資訊,使函式的區域性變數可以儲存下來避免使用全域性變數 資料汙染 提供部分資料的實現 更優雅物件導向的實現eg def f...

python函式閉包和遞迴 函式和閉包之尾遞迴

前面提到過,如果想把更新var的while迴圈轉換成僅使用val這種更函式式的風格的話,有時候你可以使用遞迴。下面的例子是通過不斷改善猜測數字來逼近乙個值的遞迴函式 var guess initialguess while isgoodenough guess guess improve guess...