第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS 的循環(huán)引用, 原因是什么?

JS 的循環(huán)引用, 原因是什么?

四季花海 2019-04-07 09:38:00
Mozilla文檔上的例子,這個是在IE6,7里的,https://developer.mozilla.org/en-US/docs/JavaScript/Memory_Managementvardiv=document.createElement("div");div.onclick=function(){doSomething();};//Thedivhasareferencetotheeventhandlerviaits'onclick'property//Thehandleralsohasareferencetothedivsincethe'div'variablecanbeaccessedwithinthefunctionscope//Thiscyclewillcausebothobjectsnottobegarbage-collectedandthusamemoryleak.這里說的,函數(shù)里有一個對div的引用,可是在哪,是this么?在ChromeFirefox里是否有類似的內(nèi)存泄漏問題?這是語言設(shè)計的失誤么?
查看完整描述

1 回答

?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊

那幾句英文大概是這個意思:
1.名叫div的變量有一個對handler的引用(因為handler是它的一個屬性)
2.handler也同樣有一個對div的引用(因為div處于它的作用域內(nèi)。這是js閉包的特性,函數(shù)內(nèi)的代碼可以引用函數(shù)外的變量)
3.這就造成了循環(huán)引用,最后兩個變量都不會被銷毀,成了內(nèi)存泄露
按照這個說法,像下面這樣寫代碼就不會出現(xiàn)這種內(nèi)存泄露了。
因為div變量不再處于handler函數(shù)的作用域之中。
varhandler=function(){dosomething();};
(function(){
vardiv=document.createElement("div");
div.onclick=handler;
})();
不過我也是猜想的,沒怎么研究過內(nèi)存泄露的問題。
                            
查看完整回答
反對 回復(fù) 2019-04-07
  • 1 回答
  • 0 關(guān)注
  • 368 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號