例如,我有一个带闭包的函数:
function getData() {
var status = 0;
var func = function() {
status++
alert(status);
}
return func;
}
它工作正常,变量“状态”在闭包函数中可见。
但是,如果我将闭包代码转移到单独的函数中,则闭包变量“status”不可用:
function getData() {
var status = 0;
var func = function() {
myFunction();
}
return func;
}
function myFunction() {
status++
alert(status);
}
是的,我可以将此变量发送给函数,然后返回更改后的值。但是如果我需要在“myFunction”中递归呢?
function getData() {
var status = 0;
var a = function() {
myFunction(status);
}
return a;
}
function myFunction(status) {
if (status == 0) {
status = 1;
// After calling this function again "status" will reset to 0,
// but I want to save current value (status = 1).
data();
}
return status++;
}
var data = getData();
data();
如何为对闭包函数的所有调用获取变量“状态”的一个实例。
谢谢!