Javascript 如何使用递增函数避免全局变量?
以下是我的自动执行功能:Javascript 如何使用递增函数避免全局变量?,javascript,Javascript,以下是我的自动执行功能: var incrementInt = (function() { var manyOut = 10; if(incInt) { incInt+=manyOut; } else { var incInt = 0; } return { s: incInt, m: manyOut }; })(); 我已经私有化了incInt和manyOut变量,并将incr
var incrementInt = (function() {
var manyOut = 10;
if(incInt) {
incInt+=manyOut;
} else {
var incInt = 0;
}
return {
s: incInt,
m: manyOut
};
})();
我已经私有化了incInt和manyOut变量,并将incrementInt变量绑定到返回的对象
我的目标是创建一个函数,该函数返回一个对象,其中一个属性是一个整数,每次调用该属性时都会递增。我希望递增变量的作用域尽可能窄
上述解决方案的问题在于每次调用函数时都会重新初始化变量incInt。由于变量在函数中的作用域,它会自动销毁。您可以创建这样的对象
function incr () {
var i = 0;
this.inc = function() {
i++;
}
}
var incrInt = new incr();
// somewhere in you code
incrInt.inc();
您可以创建这样的对象
function incr () {
var i = 0;
this.inc = function() {
i++;
}
}
var incrInt = new incr();
// somewhere in you code
incrInt.inc();
基本上,利用Javascript使用函数创建作用域和闭包以捕获局部变量的能力
基本上,利用Javascript使用函数创建作用域和闭包来捕获局部变量的能力。您需要使用方法来添加和获取变量
incInt
var incrementInt = (function() {
var manyOut = 10,
incInt = 0;
return {
add: function() {
return incInt += manyOut;
},
getInt: function() {
return incInt;
}
};
})();
var a = incrementInt;
a.add();
a.add();
a.getInt(); // 20
您需要使用方法来添加和获取变量
incInt
var incrementInt = (function() {
var manyOut = 10,
incInt = 0;
return {
add: function() {
return incInt += manyOut;
},
getInt: function() {
return incInt;
}
};
})();
var a = incrementInt;
a.add();
a.add();
a.getInt(); // 20
每次什么时候叫什么?哦!这是一个很好的观点。只叫一次!每次什么时候叫什么?哦!这是一个很好的观点。只叫一次!非常好,其他解决方案看起来很有希望,但感谢您回答返回对象的完整问题,注意到我希望增量是可变的非常好,其他解决方案看起来很有希望,但感谢您回答返回对象的完整问题,注意到我希望增量是一个变量