闭包: 外部函数返回一个内部函数,内部函数引用了外部函数的变量,当外部函数执行完毕后,它的活动变量不会被销毁,是因为内部函数的作用域链中仍然有对这些变量的引用

147 阅读1分钟

闭包:

外部函数返回一个内部函数,内部函数引用了外部函数的变量,当外部函数执行完毕后,它的活动变量不会被销毁,是因为内部函数的作用域链中仍然有对这些变量的引用。

// 标准的闭包函数
function A(){
      var i=0;
      return function b(){
              return (++i);
      };
};
//外部函数A执行完毕了,但是i并不会被销毁,是因为返回的匿名函数中包含i,并且匿名函数并没有被调用而是被变量v引用的,由于v为全局变量会一直存在,那么匿名函数和其中的变量i也就会一直存在。
var v=A();
v();    //1
v();    //2


//箭头函数体的闭包( i=0 是默认参数)
var Add = (i=0) => {return (() => (++i) )};
var v = Add();
v();           //1
v();           //2

//因为仅有一个返回,return 及括号()也可以省略
var Add = (i=0)=> ()=> (++i);