其他支持闭包的语言:Lua
定义一个函数时,它可以访问两类变量:全局变量和它定义时作用域内的局部变量。这些局部变量如果被函数引用,就会被「捕获」并绑定在这个函数上,形成闭包,即使原作用域已经结束,函数仍然可以访问这些变量。
闭包是可以多层嵌套的
// 多层闭包 package main import "fmt" func outer() func() func() { a := 1 return func() func() { b := 2 return func() { c := 3 fmt.Println(a + b + c) // 输出 6 } } } func main() { outer()()() }