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

时间:2013-11-27 22:35:11

标签: javascript closures

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

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

2 个答案:

答案 0 :(得分:5)

每当你致电increment()时,你都会创建一个“新计数器”,所以第二个例子不一样,你创建了两个不同的实例。

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

var inc = increment();

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

答案 1 :(得分:0)

你正在返回一个函数,所以它将是

var inc = increment();
inc();
inc();

这是一个小提琴 http://jsfiddle.net/kkemple/hLQ3x/