閉包的理解
阿新 • • 發佈:2020-12-12
技術標籤:js
閉包的定義
百度百科上是這麼說的。閉包就是能夠讀取其他函式內部變數的函式。例如在javascript中,只有函式內部的子函式才能讀取區域性變數,所以閉包可以理解成“定義在一個函式內部的函式“。在本質上,閉包是將函式內部和函式外部連線起來的橋樑。
我們看一個最簡單的例子
function d(){
var b = 11;
function v(){
return b++
}
return v
}
這就是一個常見簡單的閉包,子函式讀取了父函式內部的區域性變數。
我們來看另一個例子
(function(){
let d = 22;
function b(){
return d++
}
})
這是閉包嗎?
這也是一個閉包,依然滿足閉包的定義。
在平時寫程式碼的時候,其實我們也會不經意間用到閉包。
總結倆點;
一、函式巢狀。
二、訪問其他函式內部變數。
閉包的缺點。
容易汙染記憶體。
這一點說重要也很重要。
我們在使用閉包的時候,如果那個函式是一個一直都有需要使用的函式,那麼也就不會存在記憶體佔用汙染的說法。
但是如果是一些不經意間使用的閉包,而且沒有多次使用的。那這造成了汙染。
所以要善於觀察,發現這種情況進行變數清空就好了。