五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

閉包有什么用?

2022-12-22 12:09 作者:NightPoetry  | 我要投稿

簡(jiǎn)而言之,閉包就是用來(lái)延長(zhǎng)局部變量生命周期的,延長(zhǎng)的同時(shí)可以在其他位置訪問(wèn)局部變量(不能訪問(wèn)就跟沒(méi)延長(zhǎng)一樣)。

閉包的形式就是在函數(shù)中對(duì)外開(kāi)放另一個(gè)方法使得其他地方(外部和內(nèi)部皆可)可以通過(guò)此方法來(lái)訪問(wèn)這個(gè)函數(shù)的局部變量。

例如:function abc(){

?????? let a=1;

?????? return function(b){

????????????? a=b;

????????????? console.log(a);

}

}

let func = abc();

func(4);

這時(shí)候會(huì)發(fā)現(xiàn)調(diào)用abc的時(shí)候產(chǎn)生的局部變量a,在函數(shù)執(zhí)行完后并沒(méi)有銷(xiāo)毀,而是可以通過(guò)返回的方法func進(jìn)行間接的修改。類(lèi)似這種保留局部變量并讀取或修改的方式就是閉包。

下面我將列舉一種閉包的實(shí)際用途。那就是面向切面的編程,尤其是不能修改源代碼卻需要進(jìn)行一定的侵入式修改和讀取的時(shí)候。

例如你想跟蹤你的代碼的執(zhí)行過(guò)程,或者說(shuō)是保留你代碼的執(zhí)行過(guò)程然后給其他程序進(jìn)行檢測(cè)和處理,那么這里就牽涉到了局部變量的保存,最簡(jiǎn)單的方式自然就是在程序的執(zhí)行過(guò)程中加入一些代碼使得程序形成閉包,然后得到閉包訪問(wèn)函數(shù)進(jìn)行訪問(wèn),此時(shí)外部的訪問(wèn)完全不影響內(nèi)部的執(zhí)行。甚至內(nèi)部已經(jīng)執(zhí)行完成了,但是留下了一堆閉包,這時(shí)候在外部只需要使用樹(shù)的遍歷的方式即可完成訪問(wèn)。

簡(jiǎn)而言之,試想你完成了一種遞歸的算法,后來(lái)發(fā)現(xiàn)你需要獲取遞歸過(guò)程中產(chǎn)生的數(shù)據(jù),而且是直接訪問(wèn)變量而不是變量的結(jié)果,此時(shí)就不能簡(jiǎn)單的在遞歸的過(guò)程中存儲(chǔ)中間結(jié)果,而是將內(nèi)部的中間結(jié)果保存為閉包。


閉包有什么用?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
武宣县| 扎兰屯市| 永年县| 潼关县| 土默特右旗| 文成县| 彭州市| 景谷| 富锦市| 兴义市| 花垣县| 莲花县| 阿合奇县| 称多县| 金沙县| 香格里拉县| 枣强县| 南皮县| 蒙自县| 宾阳县| 余江县| 清远市| 宁国市| 淮阳县| 鲜城| 县级市| 乐昌市| 交口县| 呼伦贝尔市| 呼和浩特市| 上饶县| 五寨县| 浦北县| 灵山县| 资兴市| 收藏| 黔西| 新巴尔虎左旗| 丁青县| 板桥市| 册亨县|