闭包

 function add () {
        var c = 0;
          return function () {return c += 1;}
      };
      var num= add();    //function () {return c += 1;}
      num();  //1
      num();  //2
      num();  //3

闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。

var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();
 
add(); //1
add(); //2
add(); //3

add先自调一次

原文地址:https://www.cnblogs.com/xsffliu/p/9066922.html