簡體   English   中英

如何統計一個返回自身的函數被調用了多少次?

[英]How to keep a count of how many times a function which returns itself has been called?

我的問題是,如果我有這樣的功能

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節中使用。 謝謝大家的幫助。

不要將計數器附加到函數本身上,而不會污染全局空間。

function f(a)
{
    ++f.counter;
    if (a) {
       doAThing();
       return f;
    } else 
       doAnotherThing();
}
f.counter = 0;

現在,您可以隨時通過評估f.counter來訪問呼叫數量。

只需在函數范圍之外創建一個count變量,每當您輸入函數時,就可以增加其值。

var count = 0;

function f(a) {
    count++;

    if (!a) {
        alert(1);
        return f;
    } else {
        alert(2);
    }
}

“包裝功能”是指“關閉”嗎?

var f = (function (a) {
  var count = 0; 

  return function () { 
    console.log(count);
    count += 1;

    if (!a) {
      alert(1);
      return f;
    } else {
      alert(2);
    }
  }

})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM