计算机科学中,闭包是一个有自己环境的函数。在这个环境中,至少有一个绑定的变量(一个有值的名字,比如数字)。闭包的环境在闭包的两次使用之间将绑定的变量保存在内存中。

Peter J. Landin在1964年将这个想法命名为闭包。1975年后,Scheme编程语言使闭包变得流行。在那之后,许多编程语言都有闭包。

匿名函数(没有名字的函数)有时被错误地称为闭包。大多数有匿名函数的语言也有闭包。如果一个匿名函数有一个自己的环境,并且至少有一个绑定的变量,那么它也是一个闭包。一个没有自己的环境的匿名函数不是闭包。一个命名的闭包不是匿名的。