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