|
function outside()
{
var myVar = 1;
return function (){
alert(myVar);
}
}
var t = outside();
t();
js中 某個函數的內部函數在該函數執行結束后仍然可以訪問這個函數中定義的變量,這稱為閉包(Closure)
下面例子是給三個錨anchor1,anchor2,anchor3添加onclick事件,可以預期的效果是點擊錨點顯示相應的錨點ID,實際上卻都是顯示"My id is anchor4", 這個就是閉包作用引起的邏輯上的bug,添加事件的函數執行完后i的值為4,
復制代碼 代碼如下:
ADS.addEvent(window, 'load', function(W3CEvent) {m
for (var i=1 ; i<=3 ; i++ ) {
var anchor = document.getElementById('anchor' + i);
ADS.addEvent(anchor,'click',function() {
alert('My id is anchor' + i);
});
}
});
JavaScript技術:js的閉包的一個示例說明,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。