閉包是支持一等函數的編程語言(Python、JavaScript等)中實現詞法綁定的一種技術。
當捕捉閉包的時候,它的自由變量(在函數外部定義但在函數內部使用的變量)會在捕捉時被確定,這樣即便脫離了捕捉時的上下文,它也能照常運行。簡單的說,可以將閉包理解為能夠讀取其他函數內部變量的函數。
正在情況下,函數的局部變量在函數調用結束之后就結束了生命周期,但是閉包使得局部變量的生命周期得到了延展。使用閉包的時候需要注意,閉包會使得函數中創建的對象不會被垃圾回收,可能會導致很大的內存開銷,所以閉包一定不能濫用。