我的问题是,如果我有这样的功能
function f(a) {
if (a == undefined) {
alert(1)
return f
} else {
alert(2)
}
}
我这样称呼它,例如,f()()()()('123')
,我如何跟踪f被调用的次数?
编辑: 我玩了一个游戏并制定了解决方案:
function f(a) {
if (!f.count) {
f.count = 0;
}
if (a == undefined) {
alert(1);
++f.count;
return f;
} else {
f.count = 0;
alert(2);
}
}
alert(1)和alert(2)目前基本上是占位符。 count变量将在实际函数的else部分中使用。 感谢大家的帮助。
答案 0 :(得分:2)
不是污染全局空间,而是将计数器附加到函数本身。
function f(a)
{
++f.counter;
if (a) {
doAThing();
return f;
} else
doAnotherThing();
}
f.counter = 0;
现在,您可以通过在任何时候评估f.counter来访问调用次数。
答案 1 :(得分:1)
只需在函数范围之外创建一个计数变量,无论何时输入该函数,都会增加其值。
var count = 0;
function f(a) {
count++;
if (!a) {
alert(1);
return f;
} else {
alert(2);
}
}
答案 2 :(得分:0)
“包装函数”是指“封闭”吗?
var f = (function (a) {
var count = 0;
return function () {
console.log(count);
count += 1;
if (!a) {
alert(1);
return f;
} else {
alert(2);
}
}
})();