【发布时间】:2013-06-24 16:46:45
【问题描述】:
我有一个简单的目标,我想增加一个变量,但我面临着闭包问题。我已经读过为什么会在这里发生这种情况How do JavaScript closures work?
但我找不到解决问题的方法:/
让我们假设这部分代码是我从链接中获取的。
function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); //incrementation
}
num++;
return sayAlert;
}
我想在函数中增加 num 并保留对 num 的更改。
我该怎么做?
这是我遇到问题的 JsFiddle,我不知道如何增加我的 totalSize 并保留它。
我不想要一个以闭包结尾的局部变量。
【问题讨论】:
-
那么问题出在哪里?你需要达到什么目标?
say667()()将始终提醒667,正如函数名称所假定的那样。如果您希望返回的函数每次都提示递增值,则应将 num++ 移动到sayAlert的主体内。 -
如果你想访问 global 变量,那么不要在你的函数中使用同名的 local 变量。
-
同意@Tommi。您应该发布此功能的使用示例和预期结果,以便我们了解您想要实现的目标
-
我编辑了主帖,这涉及 nodejs 和 mongoose 以及我在 Steam 上流行的一些 xml,但它是 javascript,我正在努力解决它:/ 我应该创建一个新帖子吗?
标签: javascript asynchronous closures