JavaScript學習之閉包

參考

阮一峰

廖雪峰

閉包

變量作用域

限定變量的使用范圍,就像是對于一個SAP的產品不同的角色有不同的使用權限;

全局變量

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


圖1

局部變量

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


圖2

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


圖3

閉包的定義

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

JavaScript鏈式作用域

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

閉包實現的機理

基于鏈式作用域的概念,將某個局部變量存儲在一個內部函數(可以訪問父層函數中的局部變量)中,并將該函數作為函數的返回只值;即可實現 從外部讀取內部變量;


圖4


閉包的作用

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

緩存局部變量;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容