我可以这样称呼这种关闭:

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

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

  }

})();
increment(); //1
increment(); //2


但是,如何使用常规函数语法来称呼它呢?

function increment() {
   var test = 0;

   return function () {
     test++;
     console.log(test);
   }
}
increment()(); 1
increment()(); 1

最佳答案

每当调用increment()时,都会创建一个“新计数器”,因此第二个示例并不相同,您将创建2个不同的实例。

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

var inc = increment();

inc(); // 1
inc(); // 2

关于javascript - Javascript关闭,以不同方式调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20254394/

10-10 16:45