閉包_(計算機科學)

在計算機科學中 ， 閉包  ， 又稱詞法閉包  或函數閉包  ， 是在支持頭等函數的編程語言中實現詞法綁定的一種技術 。 閉包在實現上是一個結構體 ， 它存儲了一個函數 （ 通常是其入口地址 ） 和一個關聯的環境 （ 相當於一個符號查找表 ） 。 環境裏是若干對符號和值的對應關係 ， 它既要包括約束變量 （ 該函數內部綁定的符號 ） ， 也要包括自由變量 （ 在函數外部定義但在函數內被引用 ） ， 有些函數也可能沒有自由變量 。 閉包跟函數最大的不同在於 ， 當捕捉閉包的時候 ， 它的自由變量會在捕捉時被確定 ， 這樣即便脫離了捕捉時的上下文 ， 它也能照常運行 。 捕捉時對於值的處理可以是值拷貝 ， 也可以是名稱引用 ， 這通常由語言設計者決定 ， 也可能由用戶自行指定 （ 如C + + ） 。