關於JS 閉包概念的好文章

2021-07-03 10:59:02 字數 1090 閱讀 6646

讀書筆記:

1、閉包使用動機:

1):將函式的內部變數暴露出來;

2):將函式內部變數駐留在記憶體中。

2、閉包使用方式:

1)使用函式體內部的全域性變數和匿名函式

function obj()

//readvars是函式體內的全域性變數,匿名方法是閉包(其引用了obj()方法中的臨時變數vars)

readvars = function()

}//obj()呼叫後,會初始化函式體內的全域性變數addvar和readvars

obj();

addvar("1");

addvar("esdsdg");

readvars();//顯示1,esdsdg

addvar("fdsafadsf");

readvars();//顯示1,esdsdg,fdsafadsf

/*總結:

在全域性變數addvar和readvars初始化後,因為addvar和readvars引用了閉包(匿名方法),而

而匿名方法又引用了obj()方法體內的臨時變數。所以,在全域性變數addvar和readvars不釋放前,obj()將

不會釋放並且臨時變數vars將一直駐留在記憶體中。

*/

2)將內部函式作為返回值,將內部函式(閉包)暴露

function newobj()

//通過返回值的方式將閉包函式暴露

return addvar;

}//objref引用了閉包函式addvar()

var objref = newobj();

objref("t1");//t1

objref("t2");//t1,t2

/*總結:

1、函式通過返回值的方式將閉包函式暴露;

2、bjref引用了閉包函式addvar(),閉包函式使用newobj()函式中的臨時變數vars

3、在bjref不釋放的情況下,newobj()不會被釋放

*/

3、引用關係為3個+的時候,物件才不會釋放,或者會被**機制**。

好文推薦:

關於工作的好文章

我有個有趣的觀察,外企公司多的是25 35歲的白領,40歲以上的員工很少,二三十歲的外企員工是意氣風發的,但外企公司40歲附近的經理人是很尷尬的。我見過的40歲附近的外企經理人大多在一直跳槽,最後大多跳到民企,比方說,唐駿。外企員工的成功很大程度上是公司的成功,並非個人的成功,西門子的確比國美大,但...

關於快取的幾篇好文章

追求極致 從技術細節看美團架構 memcache架構新思考 memcache應用場景介紹,說明 zz 大型web系統資料快取設計 l 大型 後台架構的web server與快取 intelligence computing 微博到底有多重視分布式快取 上 從技術細節看美團的架構 服務架構學習之zim...

讀到的好文章

呂氏春秋 中有這麼乙個故事 說是越王有四個兒子,有奸臣說你的大兒子要造反,越王就殺了大兒子 一段時間後奸臣有說你的二兒子要造反,二兒子也被宰了 奸臣就是奸臣,再度上奏說三兒子也要造反,造反當然立斬不赦。但是四兒子現在可不是這麼想的,心想我三個哥哥,奸臣一上奏就被砍頭了,我說不定哪天突然就被宰了,還不...