闭包的实现
在JavaScript等支持一级函数的语言中,闭包通常是这样实现的:
- 函数嵌套:在一个函数内部定义另一个函数。
- 内部函数引用外部变量:内部函数访问了外部函数的变量。
- 外部函数返回内部函数:当外部函数执行完毕后,返回内部函数,这个内部函数仍然保留了对外部函数作用域的引用。
1 | function outerFunction() { |
在这个例子中,innerFunction
是一个闭包,因为它访问了外部函数 outerFunction
的变量 outer
。即使 outerFunction
已经执行完毕,但是由于 innerFunction
被返回并且保留了对 outer
的引用,所以 outer
仍然可以被访问。