无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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)遵守國家法律
麻城市| 阿合奇县| 从江县| 寿宁县| 当阳市| 延长县| 蒲江县| 玉屏| 建始县| 高青县| 东台市| 公安县| 兰溪市| 芦山县| 永丰县| 平乡县| 西畴县| 东源县| 诏安县| 崇仁县| 博客| 临夏县| 鲁甸县| 东乡县| 板桥市| 荣成市| 容城县| 临武县| 白沙| 宁阳县| 嘉义市| 宽甸| 明光市| 旬阳县| 新巴尔虎右旗| 黄梅县| 贵溪市| 七台河市| 临高县| 聂拉木县| 滦平县|