美文网首页
封闭函数闭包

封闭函数闭包

作者: Taoqi思 | 来源:发表于2018-11-04 20:13 被阅读0次

封闭函数

封闭函数是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、将一个变量长期驻扎在内存当中,可用于循环中存索引值

<script type="text/javascript">
    window.onload = function(){
        var aLi = document.getElementsByTagName('li');
        for(var i=0;i<aLi.length;i++)
        {
            (function(i){
                aLi[i].onclick = function(){
                    alert(i);
                }
            })(i);
        }
    }
</script>
......
<ul>
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
    <li>555</li>
</ul>

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

<script type="text/javascript">

var count = function(){
    var a = 0;
    function add(){
        a++;
        return a;
    }
    return add;
})()
count();
count();
var nowcount = count();
alert(nowcount);
</script>

相关文章

  • 2018-12-05封闭函数和闭包

    封闭函数用 !或者 ~ 还有 ()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包用途 保存索引li{...

  • 封闭函数和闭包

    封闭函数用 !或者 ~ 还有 ()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包用途 1.保存索引 ...

  • js封闭函数

    封闭函数定义:(function(){……})() 闭包 闭包的本质就是函数嵌套,就是在函数里面定义函数,内部函数...

  • 封闭函数 闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 1.存索引 ...

  • 封闭函数 闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 1.存索引 ...

  • 封闭函数 闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 1.存索引 ...

  • 封闭函数和闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 1.存索引 ...

  • 封闭函数和闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 1.存索引 ...

  • 封闭函数,闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 存索引 私有计数器

  • 封闭函数,闭包

    封闭函数用 ! 或者 ~ 还有()() 闭包 闭包就是函数里面有函数,也可以叫函数的嵌套 闭包的用途 存索引 私有计数器

网友评论

      本文标题:封闭函数闭包

      本文链接:https://www.haomeiwen.com/subject/bkldxqtx.html