我有一个这样的函数:
function run(arg) {
if (!window.alreadyRun) init();
window.alreadyRun = true;
/* more code */
}
你明白了,我想弄清楚这是否是第一次调用函数。
有一个更好的方法吗?不使用全局变量?像这样的事情:
function run(arg) {
var ranAlready;
if (!ranAlready) init();
ranAlready = true;
/* more code */
}
这将返回一个函数,其中有一个名为runCount
这将保存它被调用的次数。
var yourFunction = function() {
var runCount = 0;
return function() {
console.log(runCount);
runCount++;
}
}
var a = yourFunction();
a(); // runCount: 0
a(); // runCount: 1
a(); // runCount: 2
a(); // runCount: 3
在 jsFiddle 上查看 http://jsfiddle.net/alexdickson/jYm8U/.
如果您只想运行 init 类型函数,您可以将代码放在返回内部函数的上面。在返回内部函数之前,它将被调用一次,并且其范围将保留到其外部函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)