導航:首頁 > 編程語言 > js的閉包問題

js的閉包問題

發布時間:2023-03-11 15:22:33

js閉包函數

寫這個文章也是為了回顧下閉包的只是點,其實許多前端對閉包都有點一知半解,包括我自己也是。

閉包函數:聲明在一個函數中的函數,叫做閉包函數。

閉包:內部函數總是可以訪問其所在的外部函數中聲明的參數和變數,即使在其外部函數被返回(壽命終結)了之後。其實閉包在我看來就是變數作用域的。

let c = test()其實就是將test函數運行的結果賦值給c,其返回的是d方法

執行後的結果是30,因為正常來說a和b其實是局部變數,只作用於test函數。而c()的運行環境並沒有變數a和b,其實這就是b包。由於在javascript中,只有函數內部的子函數才能讀取局部變數,所以說,閉包可以簡單理解成「定義在一個函數內部的函數「。

所以,在本質上, 閉包是將函數內部和函數外部連接起來的橋梁 。

1、是前面提到的 可以讀取函數內部的變數

2、是 讓這些變數的值始終保持在內存中 ,不會在調用後被自動清除。

閉包的注意事項:

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

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

在網上看到了一道練習題,跟this指向也有關系,可以看下

var name = "The Window";

var object = {

name : "My Object",

getNameFunc : function(){

return function(){

return this.name;

};

}

};

alert(object.getNameFunc()());

閱讀全文

與js的閉包問題相關的資料

熱點內容
省內順豐郵文件多少錢 瀏覽:715
絕密級文件應保留多少年 瀏覽:701
發文件給同事怎麼說 瀏覽:468
蘋果80歲用什麼app 瀏覽:28
順豐寄快遞文件多少錢 瀏覽:164
消費邦app是怎麼反現的 瀏覽:112
java調用介面方法 瀏覽:742
微信一種以上綁定關系 瀏覽:183
word圖片編輯大小邊框 瀏覽:468
威迅java培訓 瀏覽:389
linux禪道無法訪問 瀏覽:819
怎麼爬取歷史疫情數據 瀏覽:596
linuxjira6破解 瀏覽:694
哪個網站可以看所有檢察雜志 瀏覽:144
java高並發資料庫請求怎麼辦 瀏覽:551
win8怎麼打開gho文件怎麼打開 瀏覽:732
如何網站內搜索 瀏覽:362
qq附近的人客服號碼 瀏覽:570
mac怎麼把word文件轉換為pdf 瀏覽:6
正式文件中的文檔行距多少 瀏覽:202

友情鏈接