最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于JS中的閉包淺談

 更新時間:2013年08月23日 15:25:12   投稿:shangke  
閉包是一個擁有許多變量和綁定了這些變量的環(huán)境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分

個人見解:在函數體內定義另外的方法函數,而這個方法函數被函數以外的變量引用,這時就形成了閉包!

可能這樣的理解也太抽象了,并不是那么簡單易懂!實例吧:

復制代碼 代碼如下:

<script type="text/javascript">

function A(){
    var S=0;
    function B(){
        alert(++S);
    }
    return B;
}
var C=A();
C();
</script>

上面這一段代碼就創(chuàng)建了一個閉包,因為當函數執(zhí)行到var C=A();時,表面上看C指向的是A函數,而實際上C所指向的函數是B函數,所以再執(zhí)行到C()的時候就會輸出2;這樣的話B函數就被A函數以外的變量引用了,根據個人見解,創(chuàng)建了一個閉包!

當我在小小的了解了什么時候閉包后也順便看了哈閉包的用途,據說閉包的用途主要有兩點:

1、可以讀取函數內部的變量

2、讓這些變量始終保持在內存中

復制代碼 代碼如下:

<script type="text/javascript">
 
function A(){
 var S=1;
 D=function(){
        S+=1;
    }
 function B(){
  alert(S);
 }
    return B;
}
var C=A();
C(); // 輸出1
D();
C(); // 輸出2
  
 </script>

上面的代碼中C指向的還是是B函數,C執(zhí)行了兩次,第一次輸出1,第二次輸出2,這證明了S一直被保存在內存中,并沒有在A函數在被調用后自動清除,這是為什么呢,原因是因為B函數被賦給了一個全局變量,這導致了B函數一直在內存中,而B函數的執(zhí)行又需要依賴著A函數,所以A也一直在內存中,不會在調用結束后被回收!(這樣的理解貌似有點不專業(yè))!

表達完畢,請廣大群眾多多指教!

相關文章

  • 淺談JavaScript中的Math.atan()方法的使用

    淺談JavaScript中的Math.atan()方法的使用

    這篇文章主要介紹了JavaScript中的Math.atan()方法的使用,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • JavaScript創(chuàng)建對象的七種方式全面總結

    JavaScript創(chuàng)建對象的七種方式全面總結

    這篇文章主要介紹了JavaScript創(chuàng)建對象的七種方式,工廠模式,構造函數模式,原型模式等分別在本文中做出了講解,具體操作步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • 微信小程序中顯示html格式內容的方法

    微信小程序中顯示html格式內容的方法

    最近在工作中遇到一個需求,需要在不能顯示html格式的微信小程序中顯示html格式的內容,通過查找相關的資料發(fā)現可以利用wxParse來實現,下面這篇文章就主要給大家介紹了微信小程序實現顯示html格式內容的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • javascript基礎數據類型轉換教程示例

    javascript基礎數據類型轉換教程示例

    總結了javascipt中的數據類型之后,我們就了解了,prompt()接收的全是字符串,因此數據類型轉換就顯得尤為重要,一起來學習一下吧
    2022-03-03
  • javaScript對象和屬性的創(chuàng)建方法

    javaScript對象和屬性的創(chuàng)建方法

    javaScript對象和屬性的創(chuàng)建方法...
    2007-01-01
  • ES5學習教程之Array對象

    ES5學習教程之Array對象

    這篇文章主要給大家介紹了ES5中新增的Array對象的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
    2017-04-04
  • JavaScript 學習筆記(九)call和apply方法

    JavaScript 學習筆記(九)call和apply方法

    兩者實現的功能是完全一樣的,只是參數傳遞方式不一樣,call是將各個參數以逗號(,)隔開,而apply是將所有參數組成一個數組進行傳遞。
    2010-01-01
  • 整理JavaScript對DOM中各種類型的元素的常用操作

    整理JavaScript對DOM中各種類型的元素的常用操作

    這篇文章主要介紹了JavaScript對DOM中各種類型的元素的常用操作整理,DOM操作是JavaScript程序的一大根本任務,需要的朋友可以參考下
    2016-05-05
  • JavaScript中的toLocaleDateString()方法使用簡介

    JavaScript中的toLocaleDateString()方法使用簡介

    這篇文章主要介紹了JavaScript中的toLocaleDateString()方法使用簡介,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • js nextSibling屬性和previousSibling屬性概述及使用注意

    js nextSibling屬性和previousSibling屬性概述及使用注意

    nextSibling屬性:該屬性表示當前節(jié)點的下一個節(jié)點;如果其后沒有與其同級的節(jié)點,則返回null;previousSibling屬性:該屬性與nextSibling屬性的作用正好相反,接下來將詳細介紹下,感興趣的你不妨了解下哦,或許對你有所幫助
    2013-02-02

最新評論

汕尾市| 漳浦县| 平昌县| 冷水江市| 乐东| 广德县| 永城市| 石棉县| 雷州市| 宣武区| 卓尼县| 澳门| 墨脱县| 铜山县| 运城市| 开鲁县| 宜兰县| 陆川县| 逊克县| 吴忠市| 富民县| 嵊州市| 福贡县| 慈溪市| 曲靖市| 克什克腾旗| 汤阴县| 于田县| 南通市| 中卫市| 亳州市| 高清| 宁南县| 海门市| 建始县| 贺兰县| 平舆县| 南皮县| 万盛区| 磴口县| 政和县|