如何记录一个返回自身的函数被调用的次数?

时间:2017-11-03 20:06:46

标签: javascript

我的问题是,如果我有这样的功能

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部分中使用。 感谢大家的帮助。

3 个答案:

答案 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);
    }
  }

})();