闭包

Posted chen-sx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包相关的知识,希望对你有一定的参考价值。

闭包

什么是闭包

闭包就是一个函数,两个函数彼此嵌套,内部函数就是闭包 形成闭包条件是内部函数需要通过return给返回出来.

<script type="text/javascript">
        function f1() 
            var name="tom";
            var age=18;
            function f2() 
                console.log("名字:"+name+"--身高:"+age);
            
            return f2;
        
        var ff=f1();//ff就是一个闭包,其和f2共同指向同一个function
        ff();
</script>

解释:

f1()调用完成后,垃圾回收器会回收name和age,但是因为ff又去指向function,这样function内部的age和name仍然存在,并且与外部变量无关

闭包使用规则

同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的。 并且每个闭包可以保存自己个性化的信息。

<script type="text/javascript">
    function f1()
        var name="tom";
        var age=18;
        function f2()
            console.log("名字:"+name+",年龄:"+age);
        
        return f2;
    
    var ff1=f1();
    var ff2=f2()
    var ff3=f3();
</script>

闭包案例

闭包生成数组元素

<script type="text/javascript">
        var arr=new Array();
       for(var i=0;i<4;i++)
           arr[i]=function () 
               console.log(i);
               return i;
           
       
        arr[2]();  //4
        arr[1]();  //4
        arr[0]();  //4
        arr[3]();  //4
</script>

使用闭包

<script type="text/javascript">
        var arr=new Array();
       for(var i=0;i<4;i++)
           arr[i]=f1(i);
       
       function f1(n) 
           function f2() 
               console.log(n)
           
           return f2;
       
        arr[0]();  //0
        arr[1]();  //1
        arr[2]();  //2
        arr[3]();  //3
</script>

闭包事件操作

<script type="text/javascript">
      window.onload=function () 
          var cars=document.getElementsByTagName('li');
          //可以利用闭包给每个元素设置独立的函数处理
          //并且函数内部也有独特的下标信息供访问
            for(var i=0;i<3;i++)
                cars[i].onmouseover=over(i);
                cars[i].onmouseout=out(i);
            
          var col=['red','green','blue'];
          function over(n) 
              function f2() 
                  cars[n].style.backgroundColor=col[n];
              
              return f2;
          
          function out(n) 
              function f2() 
                  cars[n].style.backgroundColor="";
              
              return f2;
          
      
</script>

以上是关于闭包的主要内容,如果未能解决你的问题,请参考以下文章

4.标准体重: 男士体重=身高-100±3 女士体重=身高-110±3 输入性别身高体重,查看体重是否标准

线性回归

c语言可以反复的地输入身高和体重,计算体重指数并输出

求一个c++程序 要求输入身高和体重,输出BMI值(身体质量指数)

奶牛的身高(差分约束)

判断体重是否标准 男标准=身高-100±3 女标准=身高-110±3