97国产精品视频人人做人人爱,3344在线观看无码,成年人国产视频,欧美日一级片,在线看AV天堂,高清无码一本到东京热,欧美一级黄片一区2区,免费又爽又刺激高潮网址

閉包--沒有那么復雜!

2021-4-20    前端達人

一弄JS,就總有人在提閉包、閉包的,此前不了解,上網上搜,很多講的也過于難懂,感覺沒有必要那么復雜,今天就把我對于閉包的理解總結一下,力求簡單、通俗、易懂



目錄



1.什么是閉包



2.閉包有什么用?



3.閉包帶來了什么問題呢?



4.總結



 1.什么是閉包

通俗的理解就是:子函數使用著父函數作用域內的變量,導致父函數作用域內的變量無法回收釋放的這種情況。



<script>

function a(){

   let num=0;

   return ()=>{

     console.log(num++);

   }

};

let t=a();

//執行三次結果是多少?

t();

t();

t();

</script>

 看上面的代碼,分別執行三次t(),那么結果是多少呢?







結果是0,1,2,這是怎么回事呢?原因就是閉包導致的。



我們首先分析:a函數內有一個num變量和一個子函數,在子函數中使用著父函數a的變量num,使其自加1。隨后將a函數執行后復制給t,由于子函數一直在使用num變量(其實不論子函數是否使用,父函數的變量都不會釋放,隨時等待子函數調用除非子函數引用被釋放),所以num變量并不會回收釋放。也就是說三次t()改變的num其實是一個。這就是閉包的原因,如果沒有閉包,在子函數處理完num后,num回收,則應該是三個0。



2.閉包有什么用?

從另一個角度理解,如果一個函數沒有被回收釋放,那么他的父級、父級的父級。。。。。祖宗級(全局)的變量也不會被釋放,而且可以被函數訪問到。這就是為什么全局變量在哪里都可以訪問的原因了,其實就是閉包的應用。那什么時候全局變量不可用了呢,就是他內部的子函數引用都被清空的時候,也就是程序關閉了,網頁關閉了之后。



1.絕大多數時候我們不會有意識的用到閉包,但是沒有閉包你得程序是跑不了的,比如全局變量。。。。。



2.極少數情況下我們用函數去給一個變量“續命”。這種情況下,閉包就會被用到了。



3.還有就是,如果問你:



JS中沒有嚴格意義的私有變量,請問你能弄出來絕對私有么?答案:能。請看代碼:



<script>

  //這個num就是真的嚴格意義的私有

  let a=(function (){

    let num =0;

    return {

      get(){

        return num;

      },

      set(val){

        num=val;

      }

    }

  })();

  a.set(55);

  console.log(a.get());

</script>

這時a將返回一個json,里面有兩個函數,分別是get和set。當你在外部給num賦值或者是調用num時,必須通過get和set“屬性訪問器”去訪問,否則無法訪問到num變量(真正的私有)。因為當你不用get和set時候也就是說get和set函數是不存在的,那么根據“閉包的原理”num會被釋放掉,也就是說num不存在了,所以你直接num賦值是undefined的。



3.閉包帶來了什么問題呢?

這里最為典型的就是for循環中用var定義循環變量(var i=0;i<10;i++),循環的結果是相同的,就是最后一次運算的結果。這里就涉及到了作用域和閉包的問題。詳細的請看我的這篇文章,本文就不贅述了。



深入理解js_for循環條件中使用var為什么會出問題?(js塊級作用域理解)


轉自:csdn 論壇 作者:韋_恩


藍藍設計m.0391cbd.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服


日歷

鏈接

個人資料

藍藍設計的小編 http://m.0391cbd.com

存檔

主站蜘蛛池模板: 看av免费毛片手机播放| 国产丝袜第一页| 亚洲精选高清无码| www.91中文字幕| 日韩精品久久久久久久电影蜜臀| 日本人又色又爽的视频| 色精品视频| 9999在线视频| 亚洲精品福利网站| h网站在线播放| 亚洲无码电影| 国产激情国语对白普通话| 熟妇人妻无乱码中文字幕真矢织江 | 91在线日韩在线播放| 伊人久久精品无码麻豆精品| 91蜜芽尤物福利在线观看| 欧美精品影院| 久久国产热| 欧美午夜视频| 亚洲视频四区| 亚洲欧洲自拍拍偷午夜色| 日韩精品久久久久久久电影蜜臀| 无码中文AⅤ在线观看| 国产一国产一有一级毛片视频| 黄色网站在线观看无码| 久久久久亚洲精品成人网| 免费看av在线网站网址| 91丝袜乱伦| 中文字幕在线欧美| 国产情精品嫩草影院88av| 国产v精品成人免费视频71pao| 国产在线小视频| 欧美国产综合色视频| 波多野结衣一区二区三视频| 欧美激情福利| 亚洲成A人V欧美综合天堂| 老色鬼欧美精品| 亚洲精品自拍区在线观看| 九九热视频在线免费观看| 国产亚洲精品精品精品| 亚洲日韩精品伊甸| 99无码中文字幕视频| 国产成人精品一区二区不卡| 国产永久在线观看| 亚洲综合色婷婷中文字幕| 中文字幕首页系列人妻| 国产导航在线| 不卡的在线视频免费观看| 亚洲男人天堂2020| 国产人成午夜免费看| 国产精品七七在线播放| 波多野结衣的av一区二区三区| 大香网伊人久久综合网2020| 色综合成人| 亚洲视频欧美不卡| 香蕉色综合| 国产区福利小视频在线观看尤物| 国产91小视频在线观看| 蜜桃视频一区二区| 国产精品一区二区久久精品无码| 亚洲国产成人综合精品2020| 九九免费观看全部免费视频| 伊人网址在线| 亚洲女同一区二区| 老熟妇喷水一区二区三区| 乱码国产乱码精品精在线播放| 久久综合一个色综合网| 污网站在线观看视频| 91午夜福利在线观看| 午夜国产理论| Aⅴ无码专区在线观看| 国产麻豆精品手机在线观看| 久久99精品久久久大学生| 成人在线不卡视频| 性做久久久久久久免费看| 美女一级毛片无遮挡内谢| 日韩精品一区二区三区中文无码| 成年片色大黄全免费网站久久| 成人午夜视频免费看欧美| 久久这里只精品国产99热8| 亚洲天堂精品视频| 9999在线视频|