遞歸和閉包

閉包

1.定義: 函數內部有函數(函數嵌套),內部函數操作外部函數的局部變量,且外層函數的引用被賦值給變量,通過變量訪問內層函數匿名函數.

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

3.應用場景:循環綁定事件 .主要用於封裝jQuery插件,開發中用的少.

4.優點:避免變量污染.

5.缺點:閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。

遞歸:

定義:遞歸函數是在一個函數通過函數名字調用自身的函數(函數自調用)。 

應用場景:維護table列表組建,做了一個表頭篩選的功能。其中就需要獲取篩選項,當有多個篩選項數組都需要從後臺獲取的時候,就需要循環數組發送ajax請求,但是由於ajax是異步的。多個請求就無法正常處理返回。 
所以使用遞歸,在ajax的回調中重新調用他:

優點:

簡潔,在遍歷算法中,遞歸的實現明顯要比循環簡單得多

缺點:

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

2.調用棧可能會溢出.影響性能.

閉包與遞歸的區別: 
相同點:1)都是函數 
    2)在函數的內部都會調用函數

不同點: 1)閉包函數調用的內部函數需要引用外部函數的變量、參數;遞歸函數是自己調用自己,不需要引用變量、參數 
     2)閉包函數調用一次結束調用,遞歸函數在滿足遞歸條件時需要多次調用 
     3)閉包函數會比其他函數更佔內存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章