1

我有一个简单的目标,我想增加一个变量,但我面临着关闭问题。我已经阅读了为什么这里会发生这种情况JavaScript 闭包是如何工作的?

但我找不到我的问题的解决方案:/

让我们假设我从链接中获取的这部分代码。

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 并保留它。

http://jsfiddle.net/knLbv/2/

我不想要一个以闭包结尾的局部变量。

4

3 回答 3

2

从你的小提琴来看,我猜问题是闭包(totalSize应该在循环之外)和query.exec异步(这个可以用 some 验证console.log)的混合。

您似乎需要某种控制流,例如async.reduce

于 2013-06-27T11:57:40.720 回答
0
function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num++); //incrementation
}
return sayAlert;
}

var inscrese = say667();

所以如果你想增加一个就打电话increase();

于 2013-06-27T10:09:49.913 回答
-1

如果所有其他解决方案都失败,则将 num 设为数组:var num = [666],然后将其递增为第一个元素:num[0]++

于 2013-06-27T09:02:30.337 回答