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

时间:2021-03-12 21:21:27

标签: javascript function counter

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

这就是我到目前为止所拥有的,我希望它与这些类似,但我不知道如何初始化计数器。任何帮助将不胜感激!

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

3 个答案:

答案 0 :(得分:1)

创建一个 immediately invoked function expression,该 uses arrow functions 并返回您的计数箭头函数。这样你就不需要函数来引用自身,并且计数与外部完全隔离:

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());

答案 1 :(得分:0)

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

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

  return ++countTimesCalled.count;
};

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

答案 2 :(得分:0)

你可以给函数本身添加一个属性来节省它被使用的次数

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

OR 没有箭头功能。

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

  return ++this.counter;
};   

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

相关问题