閉包的總結

2021-09-26 07:29:06 字數 664 閱讀 8327

先介紹一下全域性變數和區域性變數的優缺點

全域性變數:可以重用、但是會造成全域性汙染而且容易被篡改

區域性變數:僅函式內使用不會造成全域性汙染也不會被篡改、不可以重用

從上面可以看出全域性變數和區域性變數的優缺點剛好是相對的。閉包的出現正好結合了全域性變數和區域性變數的優點。

何時使用閉包

希望重用乙個物件,又保護物件不被汙染篡改時

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

var foo = (function() ,

clearvariable: function ()

}})();

外部無法訪問到閉包裡面的變數, 但可以在閉包內部返回乙個方法, 該方法將閉包內部的變數設定為null, 讓變數失去引用,會被系統自動**。

實際上如果只是要把閉包內的一些變數給刪除, 那麼我覺得這樣的程式設計是有問題的, 如果你的變數只需要用一次,就要刪除,那麼使用閉包來實現這樣的方法顯然是浪費。 如果閉包不需要了, 想刪除閉包,直接 foo = null; 就可以了。

接下來說幾個閉包常用的用處

12

34

關於閉包的總結

使用var宣告的變數會自動被新增到最接近的環境中,如果沒有var,就會自動被新增到全域性環境中 函式引數是按值傳值的,而不是引用 函式名實際就是對佔整個函式總體的引用,函式名加個括號就表示函式執行,這個整個函式總體加個括號也表示函式執行效果一樣 經典 實際包的作用就是為內部函式建立乙個臨時的全域性變...

前端 閉包的理解總結

一 概念區分 當看到function函式裡面巢狀function函式 就是閉包。二 應用場景 1 先說正常的不同的function函式之間可以呼叫函式本身 例如 function a function b 2個函式是平級定義,但是無法訪問函式內部的變數name。2 閉包就是,當想訪問函式內部的變數時...

Python中的閉包總結

前幾天又有人在我的這篇文章 python專案練習一 即時標記 下留言,關於其中乙個閉包和re.sub的使用不太清楚。我在自己的部落格上搜尋了下,發現沒有寫過閉包相關的東西,所以決定總結一下,完善部落格上python的內容。1.閉包的概念 首先還得從基本概念說起,什麼是閉包呢?來看下維基上的解釋 複製...