什么是閉包今缚,閉包的用途是什么算柳?

什么是閉包?

閉包:如果一個函數(shù)使用了它范圍外的變量姓言,那么 這個函數(shù)+這個變量 就是閉包瞬项。


這函數(shù) 最后 輸出的 是 'Mozilla'。 init()創(chuàng)建了 一個 name 和一個 函數(shù)名為 displayName()的函數(shù)何荚。

displayName()是定義在 函數(shù)內(nèi)部的函數(shù)滥壕,僅在該函數(shù)體可用。displayName()?內(nèi)沒有自己的局部變量兽泣,然而它可以訪問到外部函數(shù)的變量绎橘,所以?displayName()可以使用父函數(shù)?init()?中聲明的變量name?。但是唠倦,如果有同名變量name?在displayName()?中被定義称鳞,則會使用?displayName()?中定義的?name?。

閉包的用途

閉包可以用在許多地方稠鼻,主要用途冈止。

一是前面提到的 可以讀取函數(shù)內(nèi)部的變量,另一個就是讓這些變量的值始終保存在內(nèi)存中候齿,不會在init()調(diào)用后被自動清除熙暴。

為什么會這樣呢闺属?原因在于init()是 displayName()的父函數(shù),而displayName()賦給的全局變量周霉,這導(dǎo)致displayName()始終在內(nèi)存中掂器,而displayName()的存在依賴于init(),因此init()也始終在內(nèi)存中俱箱,不會在調(diào)用結(jié)束后国瓮,被垃圾回收機制回收。

不必要的閉包 只會徒增內(nèi)存狞谱,可能會造成瀏覽器性能問題乃摹。解決方法是,在退出函數(shù)之前跟衅,將不使用的局部變量全部刪除孵睬。另外,閉包在jQuery中的應(yīng)用非常多伶跷。

閉包可以封裝私有變量

我們可以把函數(shù)當(dāng)作一個范圍肪康,函數(shù)內(nèi)部的變量就是私有變量,在外部無法引用撩穿,但是我們可以通過閉包的特點來訪問私有變量磷支。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市食寡,隨后出現(xiàn)的幾起案子雾狈,更是在濱河造成了極大的恐慌,老刑警劉巖抵皱,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件善榛,死亡現(xiàn)場離奇詭異,居然都是意外死亡呻畸,警方通過查閱死者的電腦和手機移盆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伤为,“玉大人咒循,你說我怎么就攤上這事〗视蓿” “怎么了叙甸?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長位衩。 經(jīng)常有香客問我裆蒸,道長,這世上最難降的妖魔是什么糖驴? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任僚祷,我火速辦了婚禮佛致,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辙谜。我一直安慰自己俺榆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布筷弦。 她就那樣靜靜地躺著,像睡著了一般抑诸。 火紅的嫁衣襯著肌膚如雪烂琴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天蜕乡,我揣著相機與錄音奸绷,去河邊找鬼。 笑死层玲,一個胖子當(dāng)著我的面吹牛号醉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辛块,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畔派,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了润绵?” 一聲冷哼從身側(cè)響起线椰,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尘盼,沒想到半個月后憨愉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡卿捎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年配紫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片午阵。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡躺孝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出底桂,到底是詐尸還是另有隱情括细,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布戚啥,位于F島的核電站奋单,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猫十。R本人自食惡果不足惜览濒,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一呆盖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贷笛,春花似錦应又、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汇荐,卻和暖如春洞就,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掀淘。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工旬蟋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人革娄。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓倾贰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拦惋。 傳聞我的和親對象是個殘疾皇子匆浙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 什么是閉包: 如果一個函數(shù)用到了它作用域外面的變量叹放,那么這個變量和這個函數(shù)之間的環(huán)境就叫閉包饰恕。 閉包的用途有些什么...
    黃威_f537閱讀 10,921評論 0 1
  • 什么是閉包: 如果一個函數(shù)用到了它作用域外面的變量俱恶,那么這個變量和這個函數(shù)之間的環(huán)境就叫閉包雹嗦。 閉包的用途有些什么...
    Save_Onfir3閱讀 9,003評論 0 5
  • 閉包是由函數(shù)和函數(shù)內(nèi)部能訪問到的變量組成的聪全,在js中函數(shù)內(nèi)部可以直接讀取全局變量泊藕,而當(dāng)我們想要得到函數(shù)內(nèi)局部變量的...
    vousmevoyezLi閱讀 1,696評論 0 0
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章难礼,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,752評論 2 9
  • 閉包 在本文章中** 閉包是指那些能夠訪問獨立(自由)變量的函數(shù) (變量在本地使用娃圆,但定義在一個封閉的作用域中)玫锋。...
    __Seve閱讀 516評論 0 0