Javascript 统计函数被调用次数的函数

Javascript Function that Counts How Many Times the Function was Called

我的任务是创建一个名为 countTimesCalled 的箭头函数,它不带任何参数。它必须 return 每次被调用的次数。该功能应该是完全独立的。

这就是我目前所拥有的,我希望它符合这些思路,但我不知道如何初始化计数器。任何帮助将不胜感激!

countTimesCalled = () => {
counter = 0;
if (counter == undefined){
    counter = 1;
    return(this.counter)
} else {
    return(this.counter++)
}

您可以将 属性 附加到跟踪计数的函数本身:

const countTimesCalled = () => {
  if (!countTimesCalled.count) {
    countTimesCalled.count = 0;
  }

  return ++countTimesCalled.count;
};

console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());

可以在函数本身加一个属性来保存使用次数

const countTimesCalled = () => {
  countTimesCalled.counter=!countTimesCalled.counter?0:countTimesCalled.counter;
  return ++countTimesCalled.counter ;
}; 

或没有箭头功能。

function countTimesCalled () {
  if (!this.counter) {
    this.counter = 0;
  }

  return ++this.counter;
};   

注意:但第一个代码是最好的。

创建一个 immediately invoked function expression that uses arrow functions 和 returns 计数箭头函数。这样你就不需要函数引用自身并且计数与外界完全隔离:

const countTimesCalled = (count => () => ++count)(0);
  
  
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());

const countTimesCalled = (
  count => // <-------------<-------------<-------------+
    () => ++count //                                    |
//  ^^^^^^^^^^^^^ gets assigned to `countTimesCalled`   |
)(0); // -->- passed as argument ->---------->----------+

扩展版如下:

const countTimesCalled = (
  () => {
    let count = 0;

    return () => {
      count += 1;

      return count;
    };
  }
)();
  
  
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());
console.log(countTimesCalled());