什麼是閉包?
簡單來說,可以訪問外部環境變數的函式就是閉包。
為了更好地理解閉包,需要了解一下區域性變數和全域性變數,我們只需要知道,在函式內部可以直接讀取到全域性變數,但是在函式外部是無法讀取函式體內的區域性變數的。
所以就需要考慮以下場景:
出於種種原因,我們需要得到函式內部的區域性變數。
這個時候的做法就是,在函式的內部再定義一個函式,那麼此時內部函式是可以訪問外部函式中的變數的,所以,我們可以把內部函式作為外部函式的返回值,這樣,就可以在外部函式也就是全域性環境下讀取到這個區域性變數啦!具體實現如下:
function outer(){
var a=1;
function inner(){
return a;
}
return inner();
}
outer(); //1
也就是說,在上段程式碼裡面,內部函式inner就是一個閉包。
那麼對閉包的另一層理解就是,閉包是定義在一個函式內部的函式。
本質上來說,閉包就是將函式內部和函式外部連線起來的一座橋樑。【阮老師說滴】
閉包的用途:一是讀取函式內部的變數,二是讓這些變數的值始終保持在記憶體中。
因此可以聯想到,閉包最需要被注意到的一個缺陷就是記憶體的問題。
相關文章
- 什麼是閉包?閉包的作用是什麼?
- 什麼是閉包
- 閉包是什麼?
- Python中什麼是閉包?閉包的好處是什麼?Python
- 閉包是什麼?怎麼形成一個閉包?為什麼使用閉包?
- 什麼是閉包陷阱?
- [JS]什麼是閉包?JS
- 什麼是閉包,閉包的優缺點?
- javascript中閉包是什麼JavaScript
- 什麼是閉包?舉個例子
- 什麼是閉包?有哪些使用場景?優缺點是什麼?
- 什麼是過時閉包及如何解決過時閉包的坑
- javaScript面試題整理 --- 什麼是閉包,什麼是立即執行函式,它的作用是什麼?簡單說一下閉包的使用場景JavaScript面試題函式
- 為什麼js會有閉包JS
- 面試官問我:什麼是JavaScript閉包,我該如何回答面試JavaScript
- [Python小記] 通俗的理解閉包 閉包能幫我們做什麼?Python
- 什麼是去中心化錢包?去中心化錢包是什麼意思?中心化
- 閉包,是真的美
- java開閉原則是什麼?Java
- 什麼是seLinux?Linux關閉seLinux有什麼影響?Linux
- 什麼是去中心化錢包?中心化
- 什麼是區塊鏈錢包區塊鏈
- 什麼是區塊鏈錢包開發區塊鏈
- 什麼是NFT數字錢包開發?
- python無法匯入包是什麼原因Python
- imtoken錢包是什麼?imtoken錢包教程
- 包裝類到底是幹什麼的
- 我就想學介面測試,為什麼還要學 Fiddler 抓包,抓包是什麼鬼?
- linux關閉防火牆命令是什麼 linux永久關閉防火牆命令分享Linux防火牆
- 閉包
- 伺服器ping丟包是因為什麼?伺服器
- iCloud是什麼?怎麼關閉“icloud儲存空間不足”提醒?Cloud
- Swift-逃逸閉包、自動閉包Swift
- 閉包 | 淺談JavaScript閉包問題JavaScript
- 【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )矩陣
- Netty(三) 什麼是 TCP 拆、粘包?如何解決?NettyTCP
- 什麼是DNS,什麼是HostsDNS
- 這是什麼這是什麼