javascript - 计算函数被调用次数的 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());
推荐阅读
- angular - Spring Security OAuth2 将 access_token 存储在 cookie 中
- django-rest-framework - 如何在 django rest 框架中从 APIView 将上下文传递给 serailizers
- laravel - Laravel Composer 安装失败,在 ubuntu 中出现错误
- docker - docker运行错误:无法访问jarfile
- sharepoint - Spfx 用于创建带有附件的新草稿电子邮件
- mysql - 连接两个表,其条件为“ON”
- asp.net-mvc - 在 MVC 的 Telerik 网格中创建工具栏功能不适用于多选
- php - 是否有用于同步更新项目的 laravel 功能或方法
- c# - 如何在工作流设计器而不是 vb 中编写 c# 表达式
- laravel-5 - 如果我在 laravel 中将其保存为 ID,如何查看城市名称?