JS 中的閉包

常見(jiàn)的面試題什么是閉包

閉包是 JS 的一種 語(yǔ)法特性笛厦,其他語(yǔ)言也有這種特性
參考MDN上閉包的定義:
閉包(closure)是一個(gè)函數(shù)以及其捆綁的周邊環(huán)境狀態(tài)(lexical environment,詞法環(huán)境)的引用的組合康栈。換而言之递递,閉包讓開(kāi)發(fā)者可以從內(nèi)部函數(shù)訪問(wèn)外部函數(shù)的作用域。

重點(diǎn):閉包讓開(kāi)發(fā)者可以從內(nèi)部函數(shù)訪問(wèn)外部函數(shù)的作用域啥么。
舉個(gè)例子:

const add2 = function (){
  var count = 0
  return function add (){ // 訪問(wèn)了外部變量的函數(shù)
  count += 1
  console.log(count)
}
}()
add2() //1
add2() // 2
  • 首先定義add2 是一個(gè)自動(dòng)執(zhí)行函數(shù)
  • 自動(dòng)執(zhí)行函數(shù)內(nèi)部定義了局部變量 count
  • 自動(dòng)執(zhí)行函數(shù)返回值是函數(shù) add
  • add2() 就等于調(diào)用add函數(shù)登舞,所以打印結(jié)果為 1
  • add2() 再次調(diào)用add函數(shù),所以打印結(jié)果為 2

我的理解

根據(jù)MDN 定義悬荣,閉包是一個(gè)函數(shù)以及其捆綁的周邊環(huán)境狀態(tài)的引用的組合菠秒。結(jié)合上面的例子閉包就是:
閉包 = 函數(shù) add + 自由變量 a,

注意:閉包既不是 函數(shù) add,也不是局部變量 a,而是二者組成的整體

閉包的優(yōu)點(diǎn)

  • 避免全局污染
  • 提供了對(duì)局部變量的間接訪問(wèn)
  • 維持變量践叠,使其不被垃圾回收

閉包的缺點(diǎn)

  • 使用不當(dāng)會(huì)造成內(nèi)存溢出言缤,所以少用閉包
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市禁灼,隨后出現(xiàn)的幾起案子管挟,更是在濱河造成了極大的恐慌,老刑警劉巖弄捕,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僻孝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡守谓,警方通過(guò)查閱死者的電腦和手機(jī)穿铆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)斋荞,“玉大人荞雏,你說(shuō)我怎么就攤上這事∑侥穑” “怎么了凤优?”我有些...
    開(kāi)封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)染服。 經(jīng)常有香客問(wèn)我别洪,道長(zhǎng),這世上最難降的妖魔是什么柳刮? 我笑而不...
    開(kāi)封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任挖垛,我火速辦了婚禮,結(jié)果婚禮上秉颗,老公的妹妹穿的比我還像新娘痢毒。我一直安慰自己,他們只是感情好蚕甥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布哪替。 她就那樣靜靜地躺著,像睡著了一般菇怀。 火紅的嫁衣襯著肌膚如雪凭舶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天爱沟,我揣著相機(jī)與錄音帅霜,去河邊找鬼。 笑死呼伸,一個(gè)胖子當(dāng)著我的面吹牛身冀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼搂根,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼珍促!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起剩愧,我...
    開(kāi)封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤猪叙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后隙咸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體沐悦,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年五督,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶殃。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡充包,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遥椿,到底是詐尸還是另有隱情基矮,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布冠场,位于F島的核電站家浇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碴裙。R本人自食惡果不足惜钢悲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舔株。 院中可真熱鬧莺琳,春花似錦、人聲如沸载慈。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)办铡。三九已至辞做,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寡具,已是汗流浹背秤茅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晒杈,地道東北人嫂伞。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帖努。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撰豺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • 閉包的形成跟變量的作用域以及變量的生存周期密切相關(guān) 一、變量的作用域,是指變量的有效范圍 當(dāng)在函數(shù)中聲明一個(gè)變量的...
    星空下的守望2018閱讀 199評(píng)論 0 0
  • 一、首先簡(jiǎn)述什么是閉包 為什么會(huì)有閉包這個(gè)概念匙监,我們知道函數(shù)內(nèi)部可以直接讀取全局變量凡橱,但是函數(shù)外部無(wú)法讀取函數(shù)內(nèi)部...
    周花花啊閱讀 304評(píng)論 0 0
  • 「每日一題」JS 中的閉包是什么稼钩? 方應(yīng)杭[https://www.zhihu.com/people/zhihus...
    7b7d23d16ab5閱讀 152評(píng)論 0 0
  • 一、情景引入: 關(guān)于js的作用域达罗,我們都知道: 1.js的作用域分兩種坝撑,全局和局部 2.在js作用域環(huán)境中訪問(wèn)變量...
    追尋1989閱讀 206評(píng)論 0 1
  • 閉包是js的一個(gè)難點(diǎn)也是它的一個(gè)特色,是我們必須掌握的js高級(jí)特性粮揉,那么什么是閉包呢巡李?它又有什么用呢? 我們都知道...
    程序猿TODO閱讀 307評(píng)論 7 0