理解js的閉包

2021-08-19 05:26:09 字數 988 閱讀 5618

閉包:將內部函式儲存到外部時,將會生成閉包。閉包會導致原有的作用域鏈不釋放,造成記憶體洩漏。

先來看乙個閉包的例子

functiona() 

returnb;

}vartemp= a();

temp();

temp();

此時輸出結果是2 和3,函式b和a形成了閉包,函式b被儲存到外部。

functiontest() 

functionb()

return[a,b];

}varmyarr= test();

myarr[0]();//101

myarr[1]();//100

函式a、b和test形成閉包,將函式a、b放在陣列同時儲存到test函式的外部。

function test()

}returnarr;

}varmyarr= test();

for(varj=0;j

<10;j++)

輸出結果為10個10,只不過控制台看的不是很清楚,可以改寫成document.write(i),此時的i的作用域是test()函式,i的結果是10,當內部函式arr執行時輸出的也是10.迴圈輸出10次,所以是10個10.

JS閉包理解

下圖例項 body ul li 1 li li 2 li li 3 li ul body html script vara document.getelementsbytagname li for vari 0 i a.length i i 如何從外部讀取區域性變數 functionvisitinn...

JS閉包理解

js閉包理解 在很多面試題中都會問什麼是js的閉包,為什麼需要使用閉包,使用閉包的優缺點!我在面試其他人的時候也喜歡問這個問題,回答的也是千奇百怪,現在就總結一下我對閉包的理解。閉包是一種概念,這種概念比較複雜,很多地方的定義不盡相同,我的理解是 閉包是能讀取函式內部變數的函式,也就是定義在函式內部...

js閉包理解

什麼是閉包?這兩天我在網上翻閱了大量的閉包理解部落格,有優秀的也有生搬硬套的。歸根揭底,還是理解的問題。我曾經聽老師講閉包後,還是一臉疑惑,然後下課去網上查閱資料,仔細研究之後知道是裡面要套乙個函式返回父級變數。這次我就講解一下個人理解的閉包。為什麼會出現閉包?首先,我們先想下,我現在需要乙個一直用...