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

歡迎光臨散文網(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)遵守國家法律
仁怀市| 高青县| 娱乐| 瓦房店市| 通州区| 钦州市| 肇源县| 周至县| 平远县| 台南县| 塔城市| 纳雍县| 林周县| 开阳县| 崇文区| 靖宇县| 诏安县| 义马市| 龙山县| 霍州市| 孟连| 怀集县| 通州市| 吉林市| 礼泉县| 巴中市| 达州市| 敦化市| 新泰市| 沈阳市| 彰化市| 海宁市| 固阳县| 浦东新区| 遵义市| 宽甸| 肃北| 呼玛县| 安阳市| 镇巴县| 峨山|