什么是闭包????
闭包(Closure)与函数有着紧密的关系,以至于许多人将函数与闭包等同起来讨论,但结果却总是讨论不清楚。
事实上在JavaScript 中,一个函数只是一段静态的代码、脚本文本,因此它是一个代码书写时,以及编译期的、静态的概念;
而闭包则是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念。
由于引擎对每个函数建立其独立的上下文环境,因此当函数被再次执行或进入函数体内的代码时,就将会得到闭包内的全部信息。
闭包具有两个特点:
第一:是闭包作为与函数成对的数据,在函数执行过程中处于激活(即可访问) 状态;
第二:是闭包在函数运行结束后,保持运行过程的最终数据状态。
因此函数的闭包总的来说决定了两件事:闭包所对应的函数代码如何访问数据,以及闭包内的数据何时销毁。对于前者来说,涉及作用域(可见性)的问题;对于后者来说,涉及数据引用的识别。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。