国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄av电影,黑色丝袜无码中中文字幕,乱熟女高潮一区二区在线

            閉包--沒有那么復雜!

            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 論壇 作者:韋_恩


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


            日歷

            鏈接

            個人資料

            藍藍設計的小編 http://www.dzxscac.cn

            存檔

            主站蜘蛛池模板: 婷婷色爱区综合五月激情韩国| 国产88av| 亚洲精品无码不卡| 成人做爰高潮尖叫声免费观看 | 青草草97久热精品视频| 亚洲熟妇无码av| 国产一区二区三区精品综合| 免费人成视频在线播放视频 | 亚洲av无一区二区三区| 日韩伦理一区| 欧美激欧美啪啪片| 自拍偷在线精品自拍偷免费| 欧美老肥妇做爰bbww| 99精品国产一区二区三区不卡| 久久精品第九区免费观看| 偷拍亚洲色图| 小视频在线看| 中文字幕乱码亚洲精品一区| 午夜亚洲理论片在线观看| 亚洲网友自拍| 无码专区男人本色| 亚洲欧美日韩精品永久| 在线观看h视频| 每日av更新| 加勒比色综合久久久久久久久| 新版天堂8中文在线最新版官网| 欧美精品小视频| 精品国产a∨无码一区二区三区| 午夜无码无遮挡在线视频| 香蕉视频在线免费看| 日本一级免费视频| 久久这里精品国产99丫e6| 国产午夜草莓视频在线观看| 高清免费毛片| 成人三级视频在线观看不卡| 国产亚洲精品第一综合| av一二三区| 美女国产在线| 色又黄又爽18禁免费视频| 樱花草在线社区www日本影院| 亚洲最新网址|