在函数运行的第一个实例上设置Variable的值

Tob*_*non 2 javascript variables scope

例如,我有一个变量,每次运行函数时都应该递增.我希望变量最初的值为0,但每次调用函数时都会增加1.我不想给变量全局范围,但是很明显,如果我在函数内声明它,它将在每次调用时重置为0.有没有一种简单有效的方法来在Javascript中执行此操作?

我的Javascript:

function myFunction(){
	var i=0;
	//Body of function
	i++;
}
Run Code Online (Sandbox Code Playgroud)

the*_*eye 6

您可以在函数对象本身上设置值,如下所示

function myFunction() {
    myFunction.i = myFunction.i || 0;
    myFunction.i++;
}
Run Code Online (Sandbox Code Playgroud)

或者,你可以像这样使用闭包

var myFunction = (function () {
    var i = 0;
    return function () {
        // `myFunction` will be this function only and it increments the 
        // `i` from the enclosed function.
        i++;
    }
})();
Run Code Online (Sandbox Code Playgroud)