如何跟踪同一功能的多次运行?

qwe*_*ymk 2 javascript function

我有这样的功能:

function run(arg) {
    if (!window.alreadyRun) init();
    window.alreadyRun = true;
    /* more code */
}
Run Code Online (Sandbox Code Playgroud)

你明白了,我试图弄清楚它是否是第一次调用函数.

有一个更好的方法吗?不使用全局变量?像这样的东西:

function run(arg) {
    var ranAlready;
    if (!ranAlready) init();
    ranAlready = true;
    /* more code */
}
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 5

这将返回一个函数,调用一个变量runCount来保存它被调用的次数.

var yourFunction = function() {
    var runCount = 0;

    return function() {
        console.log(runCount);
        runCount++;
    }  

}

var a = yourFunction();

a(); // runCount: 0
a(); // runCount: 1
a(); // runCount: 2
a(); // runCount: 3
Run Code Online (Sandbox Code Playgroud)

在jsFiddle上看到它.

如果您只想运行init类型函数,可以将代码放在上面,返回内部函数.它将在返回内部函数之前调用一次,并且其作用域将保留其外部函数.