JavaScript學(xué)習(xí)之閉包

參考

阮一峰

廖雪峰

閉包

變量作用域

限定變量的使用范圍,就像是對(duì)于一個(gè)SAP的產(chǎn)品不同的角色有不同的使用權(quán)限;

全局變量

不受作用域范圍的影響,可在作用域外訪問,也可以在作用域內(nèi)訪問;


圖1

局部變量

只能在特定的作用域范圍內(nèi)訪問(函數(shù)內(nèi)部);


圖2

Note:在作用域(函數(shù)內(nèi))中聲明局部變量要使用關(guān)鍵字var,反之該變量是全局變量;


圖3

閉包的定義

外部函數(shù)訪問一個(gè)函數(shù)內(nèi)部變量的函數(shù)(局部變量能在它的作用域之外被訪問),例如SAP中的RFC(remote function call)外部系統(tǒng)訪問SAP內(nèi)部數(shù)據(jù)的過程;--在一個(gè)函數(shù)內(nèi)部封裝一個(gè)子函數(shù)來存儲(chǔ)局部變量,并返回該函數(shù),一遍能在外部訪問局部變量;

JavaScript鏈?zhǔn)阶饔糜?/h3>

子對(duì)象會(huì)一級(jí)一級(jí)地向上尋找所有父對(duì)象的變量。所以,父對(duì)象的所有變量,對(duì)子對(duì)象都是可見的,反之則不成立。(引自阮一峰

閉包實(shí)現(xiàn)的機(jī)理

基于鏈?zhǔn)阶饔糜虻母拍?,將某個(gè)局部變量存儲(chǔ)在一個(gè)內(nèi)部函數(shù)(可以訪問父層函數(shù)中的局部變量)中,并將該函數(shù)作為函數(shù)的返回只值;即可實(shí)現(xiàn) 從外部讀取內(nèi)部變量;


圖4


閉包的作用

實(shí)現(xiàn)局部變量的跨域(從變量作用域之外來訪問該局部變量);

緩存局部變量;

最后編輯于
?著作權(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)容