【发布时间】:2012-02-25 13:24:35
【问题描述】:
在我开始之前,我意识到 ECMA 脚本规范可能会回答我的问题,但我在 SO 上询问它是为了希望得到一个可以理解的答案。
取以下代码:
function test1(param) {
alert(param);
}
function test2() {
var testvar = 99;
setTimeout(function(){ test1(testvar); }, 1000);
}
test2();
如果我运行这段代码,我会得到一个显示 99 的弹出框。
我的问题是,在test2 中,test2 完成运行后,testvar 不应该为空吗? setTimeout中的匿名函数如何获取testvar的值?调用 setTimeout 时是否正在进行某种堆栈复制?
【问题讨论】:
-
去拿一瓶伏特加,看看这个问题。我想给你一个答案,但我的办公室有禁酒政策。 stackoverflow.com/questions/500431/javascript-variable-scope
-
太棒了。感谢您的帮助。
标签: javascript settimeout