【发布时间】:2013-12-18 04:14:19
【问题描述】:
给定以下 javascript 代码:
function countdown (num) {
for (var i = 0; i <= num; i += 1) {
setTimeout(function () {
alert(num - i);
}, i * 1000);
}
}
countdown(5);
所需的结果是使用警报消息从 5 倒计时到 0。解释为什么代码只警告 -1,然后修复代码使其按预期工作。
我找到了上面的 javascript 测验,但我真的不知道如何解决它。我知道它是匿名函数,它与变量范围有关,但我认为这是一个很好的机会来了解是否有人可以向我解释为什么它不起作用以及什么需要为了工作而要做。我寻求问题背后的理论和解决方案。
我知道我只能阅读匿名函数,但使用 “真正的问题” 的解释将帮助我将问题形象化并更好地理解它。
【问题讨论】:
-
人们对这个问题投了反对票,但我已经收到了 3 种不同的方法来解决这个问题。感谢您的帮助。我会研究你提供的所有解决方案。
标签: javascript closures anonymous-function