[英]Incrementing a local variable using JavaScript
我试图增加一个计数器,但我想将变量移出全局命名空间并在本地声明它。 我不知道该怎么做。 谢谢你的帮助。
这是我目前正在使用的代码。
var mediaClickCounter = 0;
function refreshMediaAds() {
if (mediaClickCounter < 2) {
mediaClickCounter++;
} else {
mediaClickCounter = 0;
refreshAds();
}
}
// the function creates a local scope.
var refreshMediaAds = (function() {
var mediaClickCounter = 0;
// once executed it returns your actual function.
return function _refreshMediaAds() {
if (mediaClickCounter < 2) {
mediaClickCounter++;
} else {
mediaClickCounter = 0;
refreshAds();
}
}
// you execute the function.
})();
关闭<3。
如何使用这样的东西:
var ClickCounter = {
mediaClickCounter: 0,
refreshMediaAds:function() {
if (this.mediaClickCounter < 2) {
this.mediaClickCounter++;
} else {
this.mediaClickCounter = 0;
refreshAds();
}
}
};
然后你可以使用ClickCounter.refreshMediaAds()
来增加成员变量。
有可能,您可以创建一些对象并使用该函数作为其方法。 这样变量将是对象的属性而不是全局变量。
如果您目前不使用任何框架,使用MooTools可能会对您有所帮助。 创建和使用对象的一些示例位于: http : //mootools.net/docs/core/Class/Class
你可以尝试返回你拥有的东西(如果你愿意,你可以在以后使用它)
function refreshMediaAds(mediaClickCounter) {
if (mediaClickCounter < 2) {
mediaClickCounter++;
} else {
mediaClickCounter = 0;
refreshAds();
}
return mediaClickCounter;
}
//then do:
refreshMediaAds(clicks)
function refreshMediaAds() {
var mediaClickCounter = 0; // now variable have local scope.
if (mediaClickCounter < 2) {
mediaClickCounter++;
} else {
mediaClickCounter = 0;
refreshAds();
}
}
如果你真的必须,我相信这样的事情会成功。 但是,您应该将IMO保留在全局命名空间中。
var refreshMediaAds = function() {
var mediaClickCounter = 0;
return function()
{
if (mediaClickCounter < 2) {
mediaClickCounter++;
} else {
mediaClickCounter = 0;
refreshAds();
}
}
}();
请注意,我没有对此进行测试,这是对解决方案的有根据的猜测。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.