我的任务是创建一个名为 countTimesCalled 的不带参数的箭头函数。它必须返回每次调用时被调用的次数。该函数应该是完全独立的。
这就是我到目前为止所拥有的,我希望它与这些类似,但我不知道如何初始化计数器。任何帮助将不胜感激!
countTimesCalled = () => {
counter = 0;
if (counter == undefined){
counter = 1;
return(this.counter)
} else {
return(this.counter++)
}
答案 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;
};
注意:但第一个代码是最好的。