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



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

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

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

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

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

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

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 ;
};

OR不带箭头功能。

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

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

最新更新