<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        深入淺出理解JavaScript閉包的功能與用法

        來源:懂視網 責編:小采 時間:2020-11-27 22:10:47
        文檔

        深入淺出理解JavaScript閉包的功能與用法

        深入淺出理解JavaScript閉包的功能與用法:本文實例講述了JavaScript閉包的功能與用法。分享給大家供大家參考,具體如下: 理解閉包關鍵是理解JS的對象的本質以及垃圾收集機制。函數也是對象,也有屬性,通常執行一個函數時,局部變量在函數執行完后,內存會被回收,這是JS的垃圾收集機制決定的,如果
        推薦度:
        導讀深入淺出理解JavaScript閉包的功能與用法:本文實例講述了JavaScript閉包的功能與用法。分享給大家供大家參考,具體如下: 理解閉包關鍵是理解JS的對象的本質以及垃圾收集機制。函數也是對象,也有屬性,通常執行一個函數時,局部變量在函數執行完后,內存會被回收,這是JS的垃圾收集機制決定的,如果

        本文實例講述了JavaScript閉包的功能與用法。分享給大家供大家參考,具體如下:

        理解閉包關鍵是理解JS的對象的本質以及垃圾收集機制。函數也是對象,也有屬性,通常執行一個函數時,局部變量在函數執行完后,內存會被回收,這是JS的垃圾收集機制決定的,如果想保存局部變量所占用的內存,就必須把保存在另一個不被回收的變量中,通常是全局變量。函數在創建時,內部屬性[[Scope]]保存了作用域鏈,作用域鏈中包含外部函數以及全局對象的變量,被稱為變量對象。所以把內部函數返回時,由于把函數保存了,所以內部屬性[[Scope]]所保存的變量對象也就保存了而沒有被回收,因此局部變量也就被保存了。

        最簡單的閉包:

        function f1() {
         var i = 0;
         return function () {
         var j = 0;
         i++;
         console.log(i,j);
         };
        }
        var fn = f1();
        fn();//1 0
        fn();//2 0
        
        

        還有諸如給元素添加事件,事件函數保存著外部函數的變量,通過這個特性可以讓按鈕顯示被點擊次數。

        當然可以創建多層閉包,最內部函數保存所有外部函數以及全局對象的變量,但并不是任何地方都用閉包,因為其始終都帶有[[Scope]]屬性,所有比較占內存,所以在需要的時候才用。

        閉包在模塊化編程,為函數或對象創建私有變量的時候非常有用,可以避免全局污染以及變量命名沖突的問題。

        值得注意的是因為[[Scope]]與函數有關,如上述例子,在兩次執行f1函數把返回的函數保存在不同的變量中,其外部函數的變量是互不影響的。如:

        function f1() {
         var i = 0;
         return function () {
         var j = 0;
         i++;
         console.log(i,j);
         };
        }
        var fn = f1();
        fn();//1 0
        fn();//2 0
        var fn1 = f1();
        fn1();//1 0
        fn(); //3 0
        fn1();//2 0
        
        

        感興趣的朋友可以使用在線HTML/CSS/JavaScript前端代碼調試運行工具:http://tools.jb51.net/code/WebCodeRun測試一下上述代碼的運行效果,以加深對javascript閉包的認識。

        更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript常用函數技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

        希望本文所述對大家JavaScript程序設計有所幫助。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        深入淺出理解JavaScript閉包的功能與用法

        深入淺出理解JavaScript閉包的功能與用法:本文實例講述了JavaScript閉包的功能與用法。分享給大家供大家參考,具體如下: 理解閉包關鍵是理解JS的對象的本質以及垃圾收集機制。函數也是對象,也有屬性,通常執行一個函數時,局部變量在函數執行完后,內存會被回收,這是JS的垃圾收集機制決定的,如果
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品无码久久久久sm| 无码专区一va亚洲v专区在线| 亚洲国产成人一区二区三区 | 亚洲Av无码一区二区二三区| 最近2019免费中文字幕视频三| 亚洲av不卡一区二区三区| 97av免费视频| 亚洲国产夜色在线观看| 毛片a级毛片免费播放下载 | 免费无码国产V片在线观看| 免费精品国产自产拍观看| 国产亚洲人成在线影院| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 狼友av永久网站免费观看| 精品国产日韩亚洲一区在线| 亚洲成AV人网址| 成人无码a级毛片免费| 亚洲精品成人久久| 性色av免费观看| 88av免费观看入口在线| 亚洲欧洲日产国码www| 永久免费毛片手机版在线看| 国产亚洲美女精品久久| 国产亚洲综合成人91精品| h在线观看视频免费网站| 亚洲精品无码专区| 亚洲综合无码AV一区二区| 1000部啪啪毛片免费看| 亚洲国产精品成人综合色在线| 亚洲人成影院在线观看| 在线日本高清免费不卡| 亚洲av中文无码乱人伦在线观看| 亚洲一区精品伊人久久伊人| 久久久久久国产精品免费无码| 亚洲乱码国产乱码精华| 亚洲成a人片在线观看无码| 中文字幕影片免费在线观看| 国产精品成人免费观看| 亚洲娇小性色xxxx| 亚洲综合日韩久久成人AV| 最近2019中文字幕mv免费看|