1.第一點要講的毋容置疑就是(什麼事閉包了!!)
當一個函數有權訪問另一個函數內部的變量是,就形成了閉包,舉個'栗子'
function a(){
var
i;
function b(){
i++
}
}
這裏面b函數可以訪問a函數的變量i,這裏就形成了閉包
2.說了這麼多廢話閉包到底是幹嘛用的(純屬個人理解!!勿噴)
2.1 每一個函數都有自己獨立的作用域,就像是一個小黑屋,別人是進不來的(小兔子乖乖,把門開開,不開不開我不開,媽媽沒回來,咳咳,好像有什麼奇怪的東西混進來了)
但是像上面的例子,b函數可以訪問到a函數內部的變量,而在函數a外部的同名變量與之互不影響,這就是所謂'封裝性'
2.2當函數內部的一個變量在執行完畢後,會被瀏覽器的給清理掉(爲了節省內存,簡直就是過河拆橋啊),但是作爲一個新社會的青年,再利用完這個變量後我不想拋棄他,我就想留着,該怎麼辦呢,
來一個閉包,閉包會一直佔用這個變量,這樣瀏覽器就不會回首這個變量啦,我們就可以永遠在一起啦??
呸~~臭流氓