javascript - 有一个javascript函数私下跟踪它的调用次数

标签 javascript closures

我想弄清楚如何让 javascript 函数私下跟踪它被调用的次数。目标是能够在调试期间通过执行 func.run

在控制台中查询此值

我的第一次尝试:

function asdf() { 
  if (!asdf.run) {
    asdf.run = 0;
  } else {
    asdf.run++;
    console.error('run: ' + asdf.run);
  }
  console.error('asdf.run def: ');
  console.error(asdf.run);
}
asdf();



这是一个很好的教训,说明为什么人们应该始终致力于在几乎所有 javascript bool 值中使用 ===,因为它们可能 secret 地是 ==

最佳答案

闭包是实现这里的方式:

var asdf = (function () {
    var runs = 0;
    var f = function () {
        ++runs;
        // your function here
    };
    f.runs = function () {
        return runs;
    };
    return f;
}());

用法:

asdf();
asdf();
asdf.runs(); // 2
asdf();
asdf.runs(); // 3

或者,您可以使用模拟框架,例如 (shameless self plug) Myrtle .

关于javascript - 有一个javascript函数私下跟踪它的调用次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537126/

相关文章:

javascript - 在闭包中自动绑定(bind)作用域变量

javascript - this 和 javascript 中的闭包(在 paper.js 中工作)

swift - Swift 1.2 中的 @noescape 属性

c - 将 C 回调(没有上下文)包装到 Swift 闭包中

Javascript表导出到excel utf8

javascript - AngularJS - 根本不触发/获取 Http 请求

javascript - 如何获取 SVG <g> 组中条目的句柄?

javascript - 使用 javascript 对着陆页进行 A/B 测试,Math.random() 不是随机的?

javascript - Google AdWords AdGroup API 脚本中的多个标签名称

Java Lambda 和闭包