在我开始之前,我意识到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