談談老衲對閉包的理解!!綜合了我在網上看的資料,把我的理解跟大家分享

1.第一點要講的毋容置疑就是(什麼事閉包了!!)

 當一個函數有權訪問另一個函數內部的變量是,就形成了閉包,舉個'栗子'

 function a(){

 var i;

function b(){

 i++

}

}

 這裏面b函數可以訪問a函數的變量i,這裏就形成了閉包

2.說了這麼多廢話閉包到底是幹嘛用的(純屬個人理解!!勿噴)

2.1 每一個函數都有自己獨立的作用域,就像是一個小黑屋,別人是進不來的(小兔子乖乖,把門開開,不開不開我不開,媽媽沒回來,咳咳,好像有什麼奇怪的東西混進來了)

 但是像上面的例子,b函數可以訪問到a函數內部的變量,而在函數a外部的同名變量與之互不影響,這就是所謂'封裝性'

2.2當函數內部的一個變量在執行完畢後,會被瀏覽器的給清理掉(爲了節省內存,簡直就是過河拆橋啊),但是作爲一個新社會的青年,再利用完這個變量後我不想拋棄他,我就想留着,該怎麼辦呢,

 來一個閉包,閉包會一直佔用這個變量,這樣瀏覽器就不會回首這個變量啦,我們就可以永遠在一起啦??奮鬥

 呸~~臭流氓


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