• <abbr id="chdyf"></abbr>
    <ruby id="chdyf"><acronym id="chdyf"><meter id="chdyf"></meter></acronym></ruby>
    <bdo id="chdyf"></bdo>
    <dfn id="chdyf"><menu id="chdyf"></menu></dfn>
    1. <menuitem id="chdyf"></menuitem><strong id="chdyf"><menu id="chdyf"></menu></strong>

      <rt id="chdyf"><menu id="chdyf"></menu></rt>
      成人小说一区二区三区,伊人精品成人久久综合全集观看,久久HEZYO色综合,中文字幕精品人妻熟女,影音先锋成人网站,我要看免费一级毛片,中国女人做爰A片,中文字幕av久久爽Av

      Js閉包

      2020-3-3    前端達(dá)人

      所謂閉包就是說,閉包是指有權(quán)訪問另外一個函數(shù)作用域中的變量的函數(shù).可以理解為(能夠讀取其他函數(shù)內(nèi)部變量的函數(shù))

      閉包的三大特點(diǎn)為(既是優(yōu)點(diǎn),也是缺點(diǎn)):

      1,函數(shù)作用域空間不會被銷毀

      優(yōu)點(diǎn)是:空間中的內(nèi)容,永遠(yuǎn)存在

      缺點(diǎn)是:占用大量的內(nèi)存空間

      2,可以從外部訪問函數(shù)內(nèi)部的變量

      優(yōu)點(diǎn)是:使用變量數(shù)據(jù)方便

      缺點(diǎn)是:容易泄露數(shù)據(jù)信息

      3,保護(hù)私有作用域變量

      優(yōu)點(diǎn)是:確保私有作用域變量一直存在

      缺點(diǎn)是:占用內(nèi)存空間 閉包的最大問題是:有可能造成占用大量的內(nèi)存空間,降低程序的執(zhí)行效率,甚至有可能造成數(shù)據(jù)溢出或者是數(shù)據(jù)泄露 因為為了保護(hù)數(shù)據(jù)的安全性,特殊情況下,才會使用閉包舉例來說:

      // 記數(shù)器:



      //全局變量  全局變量降低函數(shù)的獨(dú)立性

      1

      // var count = 0;

      // function add(){

      // return count++;

      // }

      // console.log(add());

      // console.log(add());

      // console.log(add());



      //局部變量  函數(shù)執(zhí)行外  局部變量銷毀

      1

      // function add(){

      // var count = 0;

      // return count++;

      // }

      // console.log(add());

      // console.log(add());

      // console.log(add());



      //plus定義在add的內(nèi)部,可以訪問add局部變量count

      //f為一個全局變量,通過賦值后,成為add的返回值,也就是plus方法

      //訪問到了add中的局部變量count

      //所以count雖然是局部變量,但不允許被銷毀,plus就是閉包

      1

      2

      3

      4

      // function add(){

      // var count = 0;

      // function plus(){

      // return count++;

      // }

      // return plus;

      // }

      //

      // var f = add();

      //

      // console.log(f());

      // console.log(f());

      // console.log(f());



      //變身

      1

      // function add(){

      // var count = 0;

      // return function(){

      // return count++;

      // }

      // }

      //

      // var f = add();

      //

      // console.log(f());

      // console.log(f());

      // console.log(f());



      //繼續(xù)變身

      1

      // var f = (function (){

      // var count = 0;

      // return function(){

      // return count++;

      // }

      // }());

      //

      // console.log(f());

      // console.log(f());

      // console.log(f());

      //JS中,沒有塊作用域,但是在閉包的寫法里,可以體現(xiàn)出來。

      function outerFunc(){

      var outVar = 10;

      var innerF = function (){

      var innerVar = 20;//該變量雖然隸屬于outerFunc內(nèi)部,但是它的作用域范圍只在innerF對應(yīng)的函數(shù)體內(nèi),屬于塊級作用域

      }

      alert(innerVar);

      return innerF;

      }



      閉包的作用:

      正常函數(shù)執(zhí)行完畢后,里面聲明的變量被垃圾回收處理掉,但是閉包可以讓作用域里的 變量,在函數(shù)執(zhí)行完之后依舊保持沒有被垃圾回收處理掉



      可以讀取函數(shù)內(nèi)部的變量

      讓這些變量的值始終保持在內(nèi)存中。

      增加塊級作用域

      總結(jié):

      1、 閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個函數(shù)內(nèi)創(chuàng)建另一個函數(shù),通過另一個函數(shù)訪問這個函數(shù)的局部變量。

      2、 閉包的缺點(diǎn)就是常駐內(nèi)存,會增大內(nèi)存使用量,使用不當(dāng)很容易造成內(nèi)存泄露。

      3、不必糾結(jié)到底怎樣才算閉包,其實(shí)你寫的每一個函數(shù)都算作閉包,即使是全局函數(shù),你訪問函數(shù)外部的全局變量時,就是閉包的體現(xiàn)。







      ————————————————

      版權(quán)聲明:本文為CSDN博主「澈野」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

      原文鏈接:https://blog.csdn.net/fie_ld/article/details/104595753

      日歷

      鏈接

      個人資料

      存檔

      主站蜘蛛池模板: 国产美女精品在线| 国产午夜在线观看视频| 亚洲婷婷五月| 顺昌县| 免费能看大奶子的黄色1片.| wwwjizzjizz| 免费人成黄页在线观看国际| 欧美精品v日韩精品v国产精品| 免费jizz| 成人三级片网站| 亚洲天堂av中文字幕| 亚洲国产精品狼友在线观看| 男人天堂2025| 国产va精品免费观看| 日韩成人无码毛片| jizzjizzjizzjizzjizzjizzjizzjizzjizz| 亚洲最大成人网站| 精品少妇av一区二区| 成人一区二区免费视频| 国产?AVHD| 国精产品一区一区三区有限公司杨| 国内老司机精品视频在线播出| 欧美成人午夜视频免看| 2021国产精品视频网站| 精品人妻无码一区二区三区四川人| 亚洲天堂av在线免费| 国产三级va| 欧美亚洲色大成网站| 免费人成又黄又爽的视频网站| 亚洲精品美女久久久久99| 国产V∧在线视频| 彭泽县| 黄片av毛片在线观看| 亚洲精品成人无码AV在线| 中文a片| 爱爱福利导航| 26uuu亚洲| 熟女视频在线看| 国产网红美女av在线| 国产黄色自拍视频| 海晏县|