用JavaScript封闭

Phi*_*enn 3 javascript closures

我希望变量i是一个计数器,但它100每次都被初始化.

我怎么myFunction().f()直接打电话?

function myFunction() {
    var i=100;
    function f() {
        i=i+1;
        return i;
    }
    return f(); // with parenthesis
};
var X = myFunction();
console.log(X);
X = myFunction();
console.log(X);
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 9

你不能f直接打电话.它被封装在一个闭包中,其关键是要关闭所有局部变量.你必须把它暴露在外面myFunction.

第一:

return f; //(); // withOUT parenthesis
Run Code Online (Sandbox Code Playgroud)

然后只需调用X,因为你已经为它分配了一个函数.

var X = myFunction();
X();
Run Code Online (Sandbox Code Playgroud)