繁体   English   中英

Javascript闭包,以不同方式调用函数

[英]Javascript closure, calling function different ways

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

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()您都会创建一个“新计数器”,因此第二个示例并不相同,您将创建两个不同的实例。

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

var inc = increment();

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

您正在返回一个函数,它将是

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM