閉包是什么?計算機科學中,閉包(英語:Closure),又稱詞法閉包(Lexical Closure)或函數閉包(function closures),是引用了自由變量的函數。這個被引用的自由變量將和這個函數一同存在,即使已經離開了創造它的環境也不例外。
所以,有另一種說法認為閉包是由函數和與其相關的引用環境組合而成的實體。閉包在運行時可以有多個實例,不同的引用環境和相同的函數組合可以產生不同的實例。
閉包的概念出現于60年代,最早實現閉包的程序語言是Scheme。之后,閉包被廣泛使用于函數式編程語言如ML語言和LISP。很多命令式程序語言也開始支持閉包。
在一些語言中,在函數中可以(嵌套)定義另一個函數時,如果內部的函數引用了外部的函數的變量,則可能產生閉包。運行時,一旦外部的 函數被執行,一個閉包就形成了,閉包中包含了內部函數的代碼,以及所需外部函數中的變量的引用。其中所引用的變量稱作上值(upvalue)。
閉包一詞經常和匿名函數混淆。這可能是因為兩者經常同時使用,但是它們是不同的概念。
以上就是閉包是什么的詳細內容,更多請關注聚名網其它相關文章!