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