js閉包理解

2021-09-26 20:01:50 字數 730 閱讀 3456

什麼是閉包?

這兩天我在網上翻閱了大量的閉包理解部落格,有優秀的也有生搬硬套的。歸根揭底,還是理解的問題。

我曾經聽老師講閉包後,還是一臉疑惑,然後下課去網上查閱資料,仔細研究之後知道是裡面要套乙個函式返回父級變數。這次我就講解一下個人理解的閉包。

為什麼會出現閉包?

首先,我們先想下,我現在需要乙個一直用的變數,放在全域性中會造成全域性汙染,放在區域性中呢,變數又不能被外部訪問,有人可能會說為什麼不能這樣?

function a()

console.log(a())

``這樣確實可以在外部得到變數,但是,你可能忽略了這樣一點:函式在執行完會被銷毀,那麼裡面的變數也會隨之銷毀

那麼我們就只有用以下的寫法

function a()

}console.log(a()())

我們來分析下上面這個**,在函式a中返回了乙個函式b,此時函式b返回變數a,此時就相當於a父親裡宣告的變數,交給兒子b去返回,這樣導致函式在執行完的時候父親a應該被銷毀的,但由於兒子呼叫了a父親中的變數,導致a父親不能被銷毀。這個變數就一直能被外部訪問。

這樣就能滿足了我們的需求,而這就是閉包。

現在我們來說下什麼是閉包?

閉包就是跨作用域(子級向父級作用域)訪問變數.(這裡的變數是可以一直訪問不會被自動銷毀)

JS閉包理解

下圖例項 body ul li 1 li li 2 li li 3 li ul body html script vara document.getelementsbytagname li for vari 0 i a.length i i 如何從外部讀取區域性變數 functionvisitinn...

JS閉包理解

js閉包理解 在很多面試題中都會問什麼是js的閉包,為什麼需要使用閉包,使用閉包的優缺點!我在面試其他人的時候也喜歡問這個問題,回答的也是千奇百怪,現在就總結一下我對閉包的理解。閉包是一種概念,這種概念比較複雜,很多地方的定義不盡相同,我的理解是 閉包是能讀取函式內部變數的函式,也就是定義在函式內部...

JS閉包理解

接觸js很久了,一直對於閉包的概念不理解,因為平時很少會用到,所以找了一下資料看了一下,簡單記一下筆記,不對之處望指正。先來看乙個簡單列子 function f1 return f2 var f1pro f1 alert f1pro 2 alert f1pro 3 對輸出結果進行分析,如果我們忽略f...