Javascript关闭,调用函数的方式不同

Kin*_*rog 0 javascript closures

我可以这样调用这个闭包:

var increment = (function () {
  var test = 0;

  return function () {
    test++;
    console.log(test);

  }

})();
increment(); //1
increment(); //2
Run Code Online (Sandbox Code Playgroud)

但是,如何使用常规函数语法调用它?

function increment() {
   var test = 0;

   return function () {
     test++;
     console.log(test);
   }
}
increment()(); 1
increment()(); 1
Run Code Online (Sandbox Code Playgroud)

elc*_*nrs 5

无论何时打电话给increment()你创建一个"新计数器",所以第二个例子不一样,你创建了两个不同的实例.

您必须先创建一个实例,然后使用它:

var inc = increment();

inc(); // 1
inc(); // 2
Run Code Online (Sandbox Code Playgroud)