js中的闭包技术

js中的技术点------闭包

1.特点:

  • 函数嵌套函数

  • 内部的函数可以引用外部函数的参数或者变量

  • 参数和变量不会被垃圾回收机制回收,因为内部函数还在引用


function aaa(){
  var a = 5;
  function bbb(){
      console.log(a);
  }
  return bbb;
}
var c = aaa();     //此时c是aaa内部return的bbb函数体,外部函数aaa已运行完毕,但是变量仍被内部函数引用,故不会释放。
c();   //打印结果是5

2.好处:

  • 变量可以长期驻扎在内存之中

  • 避免全局变量的污染,有私有成员

看下面例子:

1、普通函数调用:aaa执行完毕,就回收a变量,再次执行,重新赋值计算。


function aaa(){
  var a = 1;
  a++;
  alert(a);
}
aaa(); //2
aaa(); //2

2、闭包方式调用:aaa执行后,由于a变量还在被内部函数引用,故不会被回收,再次计算,在上一次的结果上进行累加。


function aaa(){
  var a = 1;
  return function(){
      a++;
      alert(a);
  }
}
var c = aaa();
c(); //2
c(); //3
原文地址:https://www.cnblogs.com/xiaojieDeam/p/13816692.html