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

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

知識(shí)分享!淺入淺出閉包

2020-12-28 10:02 作者:光耀三十洲  | 我要投稿

什么是閉包?

閉包的概念是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù),即使另一個(gè)函數(shù)已經(jīng)執(zhí)行完畢。

示例1:

上面這段代碼就是一個(gè)簡(jiǎn)單的閉包函數(shù)。要理解閉包,首先要對(duì)js的執(zhí)行環(huán)境和作用域鏈有了解。

執(zhí)行環(huán)境

執(zhí)行環(huán)境(execution context)也叫執(zhí)行上下文

  • 全局執(zhí)行環(huán)境 - 即全局的默認(rèn)環(huán)境,被認(rèn)為是window對(duì)象,所有全局變量和函數(shù)都是作為window對(duì)象的屬性和方法創(chuàng)建的。

  • 函數(shù)執(zhí)行環(huán)境 - 函數(shù)體內(nèi)的執(zhí)行環(huán)境。當(dāng)函數(shù)被調(diào)用時(shí)函數(shù)的執(zhí)行環(huán)境被創(chuàng)建,執(zhí)行完畢后,該環(huán)境被銷毀,同時(shí)保存在其中的所有變量和函數(shù)定義也隨之被銷毀。

  • eval執(zhí)行環(huán)境 - eval(...)函數(shù)中的動(dòng)態(tài)執(zhí)行環(huán)境(略)。

執(zhí)行環(huán)境(execution context)定義了變量或函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了它們各自的行為。每個(gè)執(zhí)行環(huán)境都有一個(gè)與之關(guān)聯(lián)的變量對(duì)象(variable object),環(huán)境中定義的所有變量和函數(shù)都保存在這個(gè)對(duì)象中。雖然我們編寫的代碼無法訪問這個(gè)對(duì)象,但解析器在處理數(shù)據(jù)時(shí)會(huì)在后臺(tái)使用它。

當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),都會(huì)創(chuàng)建一個(gè)作用域鏈。 作用域鏈的用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。整個(gè)作用域鏈是由不同執(zhí)行位置上的變量對(duì)象按照規(guī)則所構(gòu)建一個(gè)鏈表。作用域鏈的最前端,始終是當(dāng)前正在執(zhí)行的代碼所在環(huán)境的變量對(duì)象。

作用域鏈

示例2:

示例2中我們可以看到,內(nèi)部環(huán)境可以通過作用域鏈訪問所有的外部環(huán)境,但外部環(huán)境不能訪問內(nèi)部環(huán)境中的任何變量和函數(shù)。全局執(zhí)行環(huán)境是作用域鏈的末端,內(nèi)部環(huán)境都可以訪問。

我們對(duì)示例1進(jìn)行修改得到示例3:

示例3中,在函數(shù) parent函數(shù)體內(nèi)聲明變量 i ,執(zhí)行函數(shù) parent并將回調(diào)賦值給變量 c。函數(shù) parent 的執(zhí)行環(huán)境 Parent Context 中的變量 i 只有函數(shù) child 能夠訪問,但是我們能夠通過執(zhí)行函數(shù) c 實(shí)現(xiàn)對(duì)變量 i 的修改操作。

假如我們省略掉【執(zhí)行函數(shù) parent并將回調(diào)賦值給變量 c】這步操作,可以得到示例4:

應(yīng)用場(chǎng)景

防抖


了解更多,請(qǐng)點(diǎn)擊:https://www.bilibili.com/video/BV14h411f78E



作者:二百多斤的英國大力士
鏈接:https://juejin.cn/post/6909394972189917198
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。


知識(shí)分享!淺入淺出閉包的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
镇安县| 新河县| 鄂托克旗| 鄂尔多斯市| 武安市| 华安县| 泸溪县| 陆川县| 苍梧县| 长春市| 武城县| 靖边县| 顺昌县| 桐城市| 桐梓县| 若尔盖县| 河津市| 灵寿县| 乌拉特前旗| 昌平区| 鞍山市| 遂溪县| 兴仁县| 玉山县| 盱眙县| 乡城县| 谷城县| 桐庐县| 西平县| 阆中市| 射洪县| 卢氏县| 皋兰县| 贵德县| 合作市| 大埔县| 北流市| 桂东县| 合水县| 文安县| 罗甸县|