封闭函数和闭包

封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。

一般定义的函数和执行函数:

function changecolor(){

    var oDiv = document.getElementById('div1');

    oDiv.style.color = 'red';

}

changecolor();

封闭函数:

(function(){

    var oDiv = document.getElementById('div1');

    oDiv.style.color = 'red';

})();

还可以在函数定义前加上“~”和“!”等符号来定义匿名函数

!function(){

    var oDiv = document.getElementById('div1');

    oDiv.style.color = 'red';

}()

闭包

什么是闭包

函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回

function aaa(a){     

      var b = 5;     

      function bbb(){

           a++;

           b++;

         alert(a);

         alert(b);

      }

      return bbb;

  }

var ccc = aaa(2);

ccc();

ccc();

改写成封闭函数的形式:

var ccc = (function(a){

  var b = 5;

  function bbb(){

       a++;

       b++;

     alert(a);

     alert(b);

  }

  return bbb;

})(2);

ccc();

ccc();

用处

1、将一个变量长期驻扎在内存当中,可用于循环中存索引值

       

  • 111
  •    

  • 222
  •    

  • 333
  •    

  • 444
  •    

  • 555

2、私有变量计数器,外部无法访问,避免全局变量的污染

作者:飘零_0f71

链接:https://www.jianshu.com/p/30091a4291ae

来源:

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(封闭函数和闭包)