亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

JavaScript 閉包

2024-04-27 15:18:04
字體:
來源:轉載
供稿:網友

我們在了解閉包之前首先了解一下以下幾點:

變量作用域

變量分為:全局變量局部變量。 首先我們,根據以下幾個例子了解一下變量作用域:

這里寫圖片描述 函數內部可以訪問全局變量但是外部無法訪問內部變量。 這里寫圖片描述 函數內部的變量如果不加 var 關鍵字就會變成全局變量。作用域鏈:把函數自身的本地變量放在最前面,把自身的父級函數中的變量放在其次,把再高一級函數中的變量放在更后面,以此類推直至全局對象為止。當函數中需要查詢一個變量的值的時候,js解釋器會去作用域鏈去查找,從最前面的本地變量中先找,如果沒有找到對應的變量,則到下一級的鏈上找,一旦找到了變量,則不再繼續。如果找到最后也沒找到需要的變量,則解釋器返回undefined。

javaScript 內存回收機制

Javascript垃圾回收的機制很簡單:一個函數在執行開始的時候,會給其中定義的變量劃分內存空間保存,以備后面的語句所用。等到函數執行完畢返回了,這些變量就被認為是無用的了,對應的內存空間也就被回收了。下次再執行此函數的時候,所有的變量又回到最初的狀態,重新賦值使用。但是這個過程不是時時的,因為其開銷比較大,所以垃圾回收器會按照固定的時間間隔周期性的執行。

閉包

概念:

各種專業文獻上的”閉包”(closure)定義非常抽象,很難看懂。我的理解是,閉包就是能夠讀取其他函數內部變量的函數。由于在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成”定義在一個函數內部的函數”。在本質上,閉包就是將函數內部和函數外部連接起來的一座橋梁。

閉包的用途: 1、獲取函數內部的變量 這里寫圖片描述 如圖,使用閉包的方式來訪問函數內部的變量。 因為,A內部的匿名函數屬于A的子類,因此可以訪問父類的變量。我們將這個匿名函數作為返回值返回。這樣就可以訪問A的變量。 2、將變量存儲在內存中 這里寫圖片描述 如圖,使用閉包將變量存儲在內存當中。 原因:這個函數內部又嵌套了另一個函數,而這個函數是有可能在外部被調用到的。并且這個內部函數又使用了外部函數的某些變量的話。這種內存回收機制就會出現問題。如果在外部函數返回后,又直接調用了內部函數,那么內部函數就無法讀取到他所需要的外部函數中變量的值了。所以js解釋器在遇到函數定義的時候,會自動把函數和他可能使用的變量(包括本地變量和父級和祖先級函數的變量(自由變量))一起保存起來。也就是構建一個閉包,這些變量將不會被內存回收器所回收,只有當內部的函數不可能被調用以后(例如被刪除了,或者沒有了指針),才會銷毀這個閉包。而沒有任何一個閉包引用的變量才會被下一次內存回收啟動時所回收。

使用時候需要注意

由于閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。

閉包會在父函數外部,改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(PRivate value),這時一定要小心,不要隨便改變父函數內部變量的值。

參考:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人久久久| 成人国内精品久久久久一区| 国产一区二区免费| 国产精品白嫩初高中害羞小美女| 亚洲午夜久久久影院| 欧美高清电影在线看| 欧美超级乱淫片喷水| 久久精品国产成人精品| 国产精品专区h在线观看| 国产欧美亚洲精品| 欧美猛少妇色xxxxx| 秋霞成人午夜鲁丝一区二区三区| 国产精品自产拍在线观| 欧美视频在线免费看| 精品露脸国产偷人在视频| 欧美性猛交xxxxx免费看| 91av视频导航| 国产亚洲精品久久久优势| 国产福利视频一区二区| 欧美激情一区二区久久久| 久久久久日韩精品久久久男男| 中文综合在线观看| 国产一区二区色| 国产精品国内视频| 亚洲第一男人av| 欧美日本中文字幕| 久久久99久久精品女同性| 国产亚洲欧美一区| 国产精品偷伦视频免费观看国产| 欧美中文在线观看| 精品国内亚洲在观看18黄| 日产日韩在线亚洲欧美| 国产一区玩具在线观看| 欧美精品制服第一页| 久久精品99久久香蕉国产色戒| 国产欧美日韩丝袜精品一区| 亚洲人午夜精品免费| 97精品久久久中文字幕免费| 国产精品7m视频| 日本电影亚洲天堂| 精品香蕉一区二区三区| 国产玖玖精品视频| 色婷婷综合成人av| 午夜精品久久久久久99热软件| 国产一区二区三区在线观看视频| 国产日韩av在线| 中文字幕亚洲欧美一区二区三区| 国内免费久久久久久久久久久| 成人深夜直播免费观看| 亚洲国产精品成人av| 国产精品美腿一区在线看| 亚洲在线视频观看| 国产欧美日韩中文字幕在线| 亚洲国产毛片完整版| 日韩精品在线观看一区| 国产午夜精品美女视频明星a级| 久久成人免费视频| 亚洲成人精品av| www.亚洲一二| 久久国产加勒比精品无码| 久久精品99无色码中文字幕| 日韩精品中文字幕在线| 91理论片午午论夜理片久久| 国内外成人免费激情在线视频网站| 一区二区欧美亚洲| 欧美另类极品videosbest最新版本| 欧美激情精品久久久久久| 国产aⅴ夜夜欢一区二区三区| 精品国产电影一区| 最近2019年中文视频免费在线观看| 国产婷婷色综合av蜜臀av| 性欧美暴力猛交69hd| 91成人福利在线| 中文字幕在线亚洲| 亚洲激情小视频| 亚洲精品一区av在线播放| 国产一区二区黑人欧美xxxx| 国产精品无av码在线观看| 欧美大片免费观看在线观看网站推荐| 久久免费少妇高潮久久精品99| 久久精品国产成人精品| 91精品国产高清自在线| 欧美黑人极品猛少妇色xxxxx| 5566日本婷婷色中文字幕97| 亚洲第一页在线| 另类美女黄大片| 日韩精品免费在线观看| 欧美中文字幕视频在线观看| 亚洲无亚洲人成网站77777| 欧美最猛性xxxxx亚洲精品| 国产精品入口免费视频一| 国产女同一区二区| 亚洲www永久成人夜色| 搡老女人一区二区三区视频tv| 亚洲日本欧美中文幕| 九九久久国产精品| 欧美激情小视频| 亚洲综合中文字幕在线观看| 超碰精品一区二区三区乱码| 成人h视频在线观看播放| 欧美成人激情图片网| 青青草原成人在线视频| 欧美激情视频在线| 国产精品久久久久久超碰| 综合欧美国产视频二区| 成人黄色免费在线观看| 欧美在线一区二区三区四| 欧美巨猛xxxx猛交黑人97人| 国产日韩视频在线观看| 久久久久久亚洲精品不卡| 久久九九国产精品怡红院| 欧美另类69精品久久久久9999| 国产91色在线| 日韩激情视频在线| 91九色国产在线| 欧美日韩性视频在线| 国产精品电影久久久久电影网| 91九色视频导航| 日韩乱码在线视频| 欧美成人性生活| 91久久精品国产91性色| 亚洲a∨日韩av高清在线观看| 欧美日韩免费在线| 一区二区三区视频在线| 亚洲一区二区三区成人在线视频精品| 国产精品欧美一区二区三区奶水| 精品高清美女精品国产区| 中文字幕自拍vr一区二区三区| 日韩美女视频中文字幕| 不卡av在线网站| 精品久久久久久久久久久| 伊人久久久久久久久久| 午夜精品久久久久久久男人的天堂| 欧美精品18videos性欧| 91亚洲人电影| 91国产美女视频| 久久精品久久久久久国产 免费| 欧美精品激情在线观看| 欧美性猛交99久久久久99按摩| 最近更新的2019中文字幕| 国模视频一区二区| 国产视频欧美视频| 欧美一级片久久久久久久| 精品中文字幕乱| 中文字幕精品一区二区精品| 91香蕉嫩草影院入口| 国产精品电影观看| 日韩大片免费观看视频播放| 亚洲区中文字幕| 国产精品尤物福利片在线观看| 中文字幕日韩高清| 欧美黑人巨大精品一区二区| 国产精品免费观看在线| 成人黄色免费网站在线观看| 成人美女av在线直播| 久久久精品国产亚洲| 国产一区在线播放| 成人激情在线观看| 91精品啪在线观看麻豆免费| 精品女同一区二区三区在线播放| 欧美成人黄色小视频| 国产精品久久久久秋霞鲁丝| 中文字幕日韩欧美在线视频| 久久精品国产v日韩v亚洲|