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