摘要:閉包是函數內部的子函數能讀取局部變量二閉包的特點函數里面嵌套函數內部函數能訪問外部函數的變量定義的參數和變量不會回收三閉包的前提先明白什么是全局變量和局部變量中聲明變量格式關鍵字變量名標識符。建議在退出函數之前,將不使用的局部變量全部刪除。
一、閉包的概念
閉包是指一個函數能夠訪問其函數外部作用域中的變量。
JavaScript閉包是函數內部的子函數能讀取局部變量
函數里面嵌套函數
內部函數能訪問外部函數的變量
定義的參數和變量不會回收
三、JavaScript閉包的前提先明白什么是全局變量和局部變量
JavaScript中聲明變量格式:var(關鍵字)+變量名(標識符)。
全局變量:
不在函數function內部用var關鍵字聲明如:
var text; var text=10;
在函數function內部沒有使用var關鍵字聲明卻直接賦值如:
function show(){
text=10;
}
局部變量:在函數function內部使用var關鍵字聲明并賦值如:
function show(){
var text=10;
}
簡單舉1個小例子
創作一個列表鼠標點擊時使其一行背景色變為紅色,點擊另一行時上次點擊的變為原樣。
首先創造列表
使用JavaScript閉包,先取出所有的li,然后用for循環找到一個個li并用function函數封裝并給其添加樣式,在函數內部for循環清除上一次點擊的背景色。
由上面可以看出閉包的兩個用途:一個是前面提到的可以讀取函數內部的變量,另一個就是讓這些變量的值始終保持在內存中。
五、JavaScript閉包的缺點及其使用建議閉包有一個嚴重的缺點:內存浪費問題。不僅僅因為它常駐內存,更主要的是,對閉包的使用不當會造成無效內存的產生。
建議:在退出函數之前,將不使用的局部變量全部刪除。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96257.html
摘要:閉包在我理解是一種比較抽象的東西。所以我寫了一篇博文來方便自己理解閉包。那么現在我們可以解釋一下閉包的第一個定義在計算機科學中,閉包是引用了自由變量的函數。循環中創建閉包在我們使用的關鍵字之前,閉包的一個常見問題就出現在循環中創建閉包。 零. 前言 從我開始接觸前端時就聽說過閉包,但是一直不理解閉包究竟是什么。上網看了各種博客,大家對閉包的說法不一。閉包在我理解是一種比較抽象的東西。所...
摘要:譯者按在上一篇博客,我們通過實現一個計數器,了解了如何使用閉包,這篇博客將提供一些代碼示例,幫助大家理解閉包。然而,如果通過代碼示例去理解閉包,則簡單很多。不過,將閉包簡單地看做局部變量,理解起來會更加簡單。 - 譯者按: 在上一篇博客,我們通過實現一個計數器,了解了如何使用閉包(Closure),這篇博客將提供一些代碼示例,幫助大家理解閉包。 原文: JavaScript Clos...
摘要:如何在初學就理解閉包你需要接著讀下去。這樣定義閉包是函數和聲明該函數的詞法環境的組合。小結閉包在中隨處可見。閉包是中的精華部分,理解它需要具備一定的作用域執行棧的知識。 這是本系列的第 4 篇文章。 作為 JS 初學者,第一次接觸閉包的概念是因為寫出了類似下面的代碼: for (var i = 0; i < helpText.length; i++) { var item = he...
摘要:但是閉包也不是什么復雜到不可理解的東西,簡而言之,閉包就是閉包就是函數的局部變量集合,只是這些局部變量在函數返回后會繼續存在。可惜的是,并沒有提供相關的成員和方法來訪問閉包中的局部變量。 (收藏自 技術狂) 前言:還是一篇入門文章。Javascript中有幾個非常重要的語言特性——對象、原型繼承、閉包。其中閉包 對于那些使用傳統靜態語言C/C++的程序員來說是一個新的語言特性。本文將...
摘要:當面試中讓我解釋一下閉包時我懵逼了。這個解釋開始可能有點晦澀,讓我們抽絲剝繭摘下閉包的真面目。此文不詳述作用域有專門的主題闡述,不過作用域是理解閉包原理的基礎。這才是閉包的真正便利之處。閉包使用不當就會很坑。 原文鏈接 為什么深度學習JavaScript? JavaScript如今是最流行的編程語言之一。它運行在瀏覽器、服務器、移動設備、桌面應用,也可能包括冰箱。無需我舉其他再多不相干...
閱讀 1639·2021-09-02 09:55
閱讀 1105·2019-08-30 13:19
閱讀 1402·2019-08-26 13:51
閱讀 1451·2019-08-26 13:49
閱讀 2379·2019-08-26 12:13
閱讀 459·2019-08-26 11:52
閱讀 1907·2019-08-26 10:58
閱讀 3088·2019-08-26 10:19