2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
js中 某個(gè)函數(shù)的內(nèi)部函數(shù)在該函數(shù)執(zhí)行結(jié)束后仍然可以訪問這個(gè)函數(shù)中定義的變量,這稱為閉包(Closure)
function outside()
{
var myVar = 1;
return function (){
alert(myVar);
}
}
var t = outside();
t();
js中 某個(gè)函數(shù)的內(nèi)部函數(shù)在該函數(shù)執(zhí)行結(jié)束后仍然可以訪問這個(gè)函數(shù)中定義的變量,這稱為閉包(Closure)
下面例子是給三個(gè)錨anchor1,anchor2,anchor3添加onclick事件,可以預(yù)期的效果是點(diǎn)擊錨點(diǎn)顯示相應(yīng)的錨點(diǎn)ID,實(shí)際上卻都是顯示"My id is anchor4", 這個(gè)就是閉包作用引起的邏輯上的bug,添加事件的函數(shù)執(zhí)行完后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);
});
}
});

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
alert(a + " = " + o[a]); 只是輸出方法定義啊
alert(a + " = " + o[a]());才是方法調(diào)用
添加回答
舉報(bào)