首页 > 解决方案 > 计算函数被调用次数的 Javascript 函数

问题描述

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

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

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

标签: javascriptfunctioncounter

解决方案


创建一个使用箭头函数并返回计数箭头函数的立即调用函数表达式。这样您就不需要函数来引用自身,并且计数与外部完全隔离:

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


推荐阅读