作用域和閉包

定義變量

js代碼在運(yùn)行時(shí) 會(huì)初始化執(zhí)行環(huán)境,這個(gè)執(zhí)行環(huán)境就是定義變量。

定義變量就是變量所屬的對(duì)象

1、全局執(zhí)行的代碼,程序頂層(不屬于某個(gè)函數(shù))中的變量、函數(shù)等 他的變量對(duì)象是window

2、函數(shù)體內(nèi)的代碼,它執(zhí)行時(shí) 也會(huì)初始化環(huán)境,定義函數(shù)體內(nèi)變量所屬的變量對(duì)象,也叫激活對(duì)象

相當(dāng)于創(chuàng)建了一個(gè)臨時(shí)對(duì)象,函數(shù)執(zhí)行完畢后立即銷毀

函數(shù)作用域

函數(shù)作用域就是通過函數(shù)來分離作用域,函數(shù)體外的是全局,函數(shù)體內(nèi)是局部,局部變量只能作用域函數(shù)體內(nèi)

塊級(jí)作用域

let和const 用來創(chuàng)建塊級(jí)作用域,let a 的本質(zhì)是在創(chuàng)建a所屬的塊級(jí)作用域

let創(chuàng)建塊級(jí)作用域就類似于函數(shù){}作用域的功能,可以認(rèn)為 let和const對(duì)函數(shù)作用域的升級(jí),除了函數(shù)以外 還可以用let const 創(chuàng)建作用域

作用域鏈

函數(shù)在執(zhí)行的過程中,先從自己內(nèi)部找變量,

如果找不到,再?gòu)膭?chuàng)建當(dāng)前函數(shù)所在的作用域去找, 以此往上

詞法作用域

閉包

當(dāng)外圍函數(shù)f的嵌套函數(shù)g 在外部被執(zhí)行時(shí),外圍函數(shù)的一次特定調(diào)用的激活對(duì)象fAO 保留下來,這就是閉包

上面的詞法作用域也形成了閉包

另外一種寫法


利用對(duì)象特性創(chuàng)建閉包

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容