閉包

閉包

就是可以讓函數(shù)訪問該函數(shù)聲明時(shí)的作用域內(nèi)的所有變量和函數(shù)。

例如:

接下來是關(guān)于()的有意思的用法谜慌±颊洌“()”緊跟在函數(shù)后面温亲,表示立即調(diào)用該函數(shù)

例如:

代碼定義了一個(gè)立即執(zhí)行函數(shù)并返回給counter藕溅,這個(gè)函數(shù)定義了一個(gè)局部變量count匕得,返回了一個(gè)子函數(shù),該子函數(shù)每次調(diào)用巾表,都會(huì)把count加一并返回汁掠,下一次調(diào)用時(shí)會(huì)在上一次調(diào)用的基礎(chǔ)上加一,可以想象成閉包將保護(hù)著count每一次運(yùn)行的值集币。

等效于

需要避免的問題:

add_the_handlers函數(shù)本意是想傳遞給每個(gè)事件處理器一個(gè)唯一的值(i)考阱。也就是每次點(diǎn)擊nodes時(shí),輸出對(duì)應(yīng)的 i 鞠苟。但事實(shí)上羔砾,每次點(diǎn)擊nodes,只會(huì)在控制臺(tái)輸出相同的值偶妖。

這是因?yàn)槭录幚砥骱瘮?shù)綁定了變量 i 本身,而不是函數(shù)在構(gòu)造時(shí)的變量 i 的值政溃。換句話說閉包中輸出的 i 是它所在作用域中的 i 的值趾访,在循環(huán)結(jié)束后 i 的值變?yōu)?。而閉包本身綁定了變量 i ,輸出的值會(huì)跟隨變量 i 的變化而變化董虱,最后輸出4扼鞋。

要使每次點(diǎn)擊nodes時(shí)申鱼,輸出對(duì)應(yīng)的 i,可使用下述代碼:

這里使用一個(gè)立即執(zhí)行函數(shù)并傳遞當(dāng)前的 i 值即上面的(i)云头,返回一個(gè)新的函數(shù)捐友。在這個(gè)新生成的函數(shù)的閉包中保存了當(dāng)前的 i 值。這樣可以得到想要的結(jié)果了溃槐。

還有一個(gè)和變量提升有關(guān)的容易混淆的東西:

代碼詳情可參見我的博客胖胖梅博客JS筆記之閉包?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匣砖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昏滴,更是在濱河造成了極大的恐慌猴鲫,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谣殊,死亡現(xiàn)場離奇詭異拂共,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)姻几,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門宜狐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛇捌,你說我怎么就攤上這事抚恒。” “怎么了豁陆?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵柑爸,是天一觀的道長。 經(jīng)常有香客問我盒音,道長表鳍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任祥诽,我火速辦了婚禮譬圣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雄坪。我一直安慰自己厘熟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布维哈。 她就那樣靜靜地躺著绳姨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阔挠。 梳的紋絲不亂的頭發(fā)上飘庄,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音购撼,去河邊找鬼跪削。 笑死谴仙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碾盐。 我是一名探鬼主播晃跺,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毫玖!你這毒婦竟也來了掀虎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤孕豹,失蹤者是張志新(化名)和其女友劉穎涩盾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體励背,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡春霍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叶眉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片址儒。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衅疙,靈堂內(nèi)的尸體忽然破棺而出莲趣,到底是詐尸還是另有隱情,我是刑警寧澤饱溢,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布喧伞,位于F島的核電站,受9級(jí)特大地震影響绩郎,放射性物質(zhì)發(fā)生泄漏潘鲫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一肋杖、第九天 我趴在偏房一處隱蔽的房頂上張望溉仑。 院中可真熱鬧,春花似錦状植、人聲如沸浊竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唆迁,卻和暖如春肉拓,著一層夾襖步出監(jiān)牢的瞬間后频,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工帝簇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徘郭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓丧肴,卻偏偏與公主長得像残揉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芋浮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • 本章將會(huì)介紹 閉包表達(dá)式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動(dòng)閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,559評(píng)論 0 3
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持纸巷,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券镇草,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 5,605評(píng)論 16 88
  • 閉包是功能性自包含模塊瘤旨,可以在代碼中被傳遞和使用梯啤。Swift中的閉包與 C 和 Objective-C中的 blo...
    AirZilong閱讀 348評(píng)論 0 2
  • 這個(gè)問題我想告訴大家一個(gè)技巧! 人在很多時(shí)候就是因?yàn)椴恢酪惠呑幼约鹤钕胍氖鞘裁葱蕹Γ圆艧o法準(zhǔn)確地尋找出自己的方...
    紫花心靈閱讀 1,252評(píng)論 0 1
  • 原本昨天晚上業(yè)主告知說從金卡到現(xiàn)場的路已經(jīng)通了贺辰,以為這樣的話應(yīng)該就算是沒事了,但是不想早上時(shí)候又被告知說Mursi...
    緒紅閱讀 101評(píng)論 0 0