閉包函數(shù)

1:

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。

這種寫法就可以獲取到函數(shù)內(nèi)部的局部變量,b函數(shù)就是閉包

function a(){

var n=9;

function b(){

alert(n)

}

return b;

}

var num=a();

num();

2:閉包的用途

閉包可以用在許多地方。

它的最大用處有兩個(gè),一個(gè)是前面提到的可以讀取函數(shù)內(nèi)部的 變量,

另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中。

3:閉包的缺點(diǎn):

使用閉包的注意點(diǎn) 由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中,

內(nèi)存消耗很大,所以不能濫用閉包,

否則會(huì)造成網(wǎng)頁的性能問題,

在 IE 中可能導(dǎo)致內(nèi)存泄露。

解決方法是,在退出函數(shù)之前,

將不使用的局部變量全部刪除。

閉包會(huì)在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。

所以,如 果你把父函數(shù)當(dāng)作對象(object)使用,

把閉包當(dāng)作它的公用方法(Public Method),

把 內(nèi)部變量當(dāng)作它的私有屬性(private value),

這時(shí)一定要小心,不要隨便改變父函數(shù)內(nèi) 部變量的值。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    </body>
    <script type="text/javascript">
        //      1:閉包函數(shù)
        //      2:閉包函數(shù)的作用
        //      2.1想獲取函數(shù)中的局部變量,那么久要用到閉包函數(shù)
        //      2.2另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中
        //獲取局部變量的案例
        //      function a(){
        //          var n=9;
        //          function b(){
        //              return n;
        //          }
        //          return b();
        //      }
        //      var c=a();
        //      alert(c)
        //變量始終保存中內(nèi)存中
        // function fun(){
        //  var n=9;
        //  a=function(){
        //      n+=1;
        //  }
        //  function f2(){
        //      alert(n);
        //  }
        //  return f2;
        // }
        // var sum=fun();
        // sum();//9
        // a();
        // sum();//10
        // a();
        // sum();//11
        // a();
        // sum();//12



        //      function fun(){
        //          var n=9;
        //          a=function(){
        //              n+=1;//n=n+1;
        //          }
        //          function f2(){
        //              alert(n);//9 10
        //          }
        //          return f2;
        //      }
        //      var sum=fun();
        //      sum();
        //      sum();
        //      sum();
        //      sum();

        ////1:第一種形式
        //      function fun(){
        //          var n=9;
        //          function sum(){
        //              alert(n)
        //          }
        //          return sum;
        //      }
        //      var c=fun();
        //      c();


        //2:第2種形式
        //      function fun(){
        //          var n=119;
        //          function sum(){
        //              function dd(){
        //                  alert(n)
        //              }
        //              return dd;
        //          }
        //          return sum;
        //      }
        //      fun()()();
        
        function a(){
            var b=2;
            function c(){
                alert(b);
            }
            return c;
        }
        a()
        
        </script>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容