关于闭包的介绍

  • 其实一直以来只知道怎么在代码中使用闭包,但是怎么去用一句话描述闭包,我还真说不清楚,其原因有几点:1、使用业务场景较复杂且灵活,很难用一句简单的描述语说清楚其概念;2、闭包用好了,你的代码量会提炼很多,减少你用很多的全局变量来污染全局空间;3、有效延长你定义的变量的作用周期,可以有效保存你的数据;

  • 当然了说了这么多,是不是闭包就神乎其神了,其实也不是,任何东西对于我们学习来说,总有它的规律和规则的。闭包在代码中形式表现为:一个函数的函数体里面访问了全局空间或外围函数里面的变量,那么此时的这个函数跟该函数访问的那个变量所在的作用域就构成了我们所说的闭包。如:

  1. var a = 15;
  2. function fn(){
  3. var b = 12 + a;
  4. return b;
  5. };
  6. /*
  7. *此时的fn函数和a变量以及a变量所在的作用域就是一个闭包
  8. */

所以说往简单了理解闭包你可以这样定义:如果一个函数的函数体里面牵扯到其他作用域(一般指外围或函数祖先级作用域)的变量,那么就称这个函数、引用的这个变量以及这个变量的作用环境合起来构建了一个闭包!说白了就是定义了一个“环境”。

为什么要使用闭包?

  • 1、减少全局空间全局变量的个数,降低命名空间污染
    • 内容待更新
  • 2、延长变量的作用周期
    • 内容待更新
  • 3、保存数据,防止数据“跟踪掉”
    • 内容待更新