闭包的理解

一.  构成闭包的必要条件有三个

     1.外部函数的局部变量被内部函数引用

      2.执行外部函数时内部函数立刻执行

      3. 通过外部函数访问未被释放的局部变量

二. 使用场景:

     1. 为保护变量不受污染

      2. 为循环调用时保留局部变量

例子:

function callLater(paramA, paramB, paramC) {  

            return (function () {  

                paramA[paramB] = paramC;  

            });  

  }  

var funcRef = callLater(elStyle, "display", "none");  

 hideMenu = setTimeout(funcRef, 500);  

可以调用另一个函数来返回一个内部函数的调用,将那个内部函数对象的引用传递给setTimeout函数。内部函数执行时需要的参数,在调用外部函数时传递给它。setTimeout在执行内部函数时无需传递参数,因为内部函数仍然能够访问外部函数调用时提供的参数

三.  缺点明显, 局部变量由于一直被引用而无法释放,造成内存垃圾。

你可能感兴趣的:(闭包的理解)