首頁 > web前端 > js教程 > 關於JS中的閉包淺談_基礎知識

關於JS中的閉包淺談_基礎知識

WBOY
發布: 2016-05-16 17:24:41
原創
1018 人瀏覽過

( ⊙o⊙ )! ! !這個也太尼瑪官方了撒,身為菜鳥的我根本無法理解它想表達個什麼意思!但身為一隻好奇的菜鳥又很想知道「閉包」到底是個什麼東西!所以最後找到了傳說中的「度娘」幫忙!還算有了一點小小的理解!

個人見解:在函數體內定義另外的方法函數,而這個方法函數被函數以外的變數引用,這時就形成了閉包!

可能這樣的理解也太抽象了,並不是那麼簡單易懂!實例吧:

複製代碼 代碼如下:




上面這段程式碼就建立了一個閉包,因為當函數執行到var C=A();時,表面上看C指向的是A函數,而實際上C所指向的函數是B函數,所以再執行到C()的時候就會輸出2;這樣的話B函數就被A函數以外的變數引用了,根據個人見解,創建了一個閉包!

當我在小小的了解了什麼時候閉包後也順便看了哈閉包的用途,據說閉包的用途主要有兩點:

1、可以讀取函數內部的變數

2、讓這些變數總是保持在記憶體

複製代碼 代碼如下:



上面的程式碼中C指向的還是B函數,C執行了兩次,第一次輸出1,第二次輸出2,這證明了S一直被保存在內存中,並沒有在A函數在被調用後自動清除,這是為什麼呢,原因是因為B函數被賦給了一個全局變量,這導致了B函數一直在記憶體中,B函數的執行需要依賴A函數,所以A也一直在記憶體中,不會在呼叫結束後被回收! (這樣的理解看起來有點不專業)!

表達完畢,請廣大群眾多多指教!
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板