如何通过闭包问题来增加全局变量



我有一个简单的目标,我想增加一个变量,但我面临着闭包问题。我已经读过为什么这里会发生这种情况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/

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

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

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

function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num++); //incrementation
}
return sayAlert;
}
var inscrese = say667();

因此,如果您想增加一个,只需调用increase();

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

最新更新