最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
响水县| 安宁市| 宜丰县| 葵青区| 历史| 阿尔山市| 库伦旗| 吉木乃县| 康定县| 上蔡县| 瑞金市| 鄂托克旗| 若羌县| 桂平市| 余姚市| 高尔夫| 德阳市| 金湖县| 邵阳市| 客服| 谷城县| 偏关县| 东方市| 繁峙县| 招远市| 通州区| 巩义市| 泸水县| 太谷县| 台前县| 曲麻莱县| 宿迁市| 井研县| 天镇县| 漳平市| 永善县| 搜索| 丁青县| 昌平区| 东辽县| 厦门市|