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

關(guān)于JS中的閉包淺談

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

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

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

復(fù)制代碼 代碼如下:

<script type="text/javascript">

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

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

當(dāng)我在小小的了解了什么時候閉包后也順便看了哈閉包的用途,據(jù)說閉包的用途主要有兩點(diǎn):

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

2、讓這些變量始終保持在內(nèi)存中

復(fù)制代碼 代碼如下:

<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函數(shù),C執(zhí)行了兩次,第一次輸出1,第二次輸出2,這證明了S一直被保存在內(nèi)存中,并沒有在A函數(shù)在被調(diào)用后自動清除,這是為什么呢,原因是因為B函數(shù)被賦給了一個全局變量,這導(dǎo)致了B函數(shù)一直在內(nèi)存中,而B函數(shù)的執(zhí)行又需要依賴著A函數(shù),所以A也一直在內(nèi)存中,不會在調(diào)用結(jié)束后被回收?。ㄟ@樣的理解貌似有點(diǎn)不專業(yè))!

表達(dá)完畢,請廣大群眾多多指教!

相關(guān)文章

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

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

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

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

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

    微信小程序中顯示html格式內(nèi)容的方法

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

    javascript基礎(chǔ)數(shù)據(jù)類型轉(zhuǎn)換教程示例

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

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

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

    ES5學(xué)習(xí)教程之Array對象

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

    JavaScript 學(xué)習(xí)筆記(九)call和apply方法

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

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

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

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

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

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

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

最新評論

大宁县| 大英县| 武冈市| 临沭县| 甘肃省| 顺义区| 耿马| 咸丰县| 宁陕县| 民权县| 青神县| 镇安县| 焉耆| 临颍县| 孝感市| 定陶县| 苍山县| 大庆市| 博乐市| 衡阳市| 秦皇岛市| 梅河口市| 封开县| 呼伦贝尔市| 阳信县| 共和县| 江源县| 金乡县| 噶尔县| 休宁县| 宁明县| 沙湾县| 沈阳市| 阜南县| 益阳市| 大丰市| 长岛县| 临武县| 车致| 深州市| 城步|