在我開始之前,我意識到ECMA腳本規範可能會回答我的問題,但我希望能夠回答這個問題。解釋爲什麼Javascript中的匿名函數可以訪問外部函數中的變量?
看看下面的代碼:
function test1(param) {
alert(param);
}
function test2() {
var testvar = 99;
setTimeout(function(){ test1(testvar); }, 1000);
}
test2();
如果我運行此代碼,我得到展示99 我的問題是,在test2
,不應testvar
test2
完成後運行爲null一個彈出框? setTimeout
中的匿名函數如何得到testvar
的值? setTimeout被調用時是否有某種堆棧複製正在進行?
提示:Google「關閉」。 – cHao 2012-02-02 21:07:44
去搶一瓶伏特加,並閱讀這個問題。我會盡力給你一個答案,但我的辦公室沒有酒精政策。 http://stackoverflow.com/questions/500431/javascript-variable-scope – aehiilrs 2012-02-02 21:10:21
太棒了。謝謝您的幫助。 – quuxbazer 2012-02-02 21:22:38