6

什么是闭包????
闭包(Closure)与函数有着紧密的关系,以至于许多人将函数与闭包等同起来讨论,但结果却总是讨论不清楚。

事实上在JavaScript 中,一个函数只是一段静态的代码、脚本文本,因此它是一个代码书写时,以及编译期的、静态的概念
而闭包则是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念

由于引擎对每个函数建立其独立的上下文环境,因此当函数被再次执行或进入函数体内的代码时,就将会得到闭包内的全部信息。

闭包具有两个特点:
第一:是闭包作为与函数成对的数据,在函数执行过程中处于激活(即可访问) 状态;
第二:是闭包在函数运行结束后,保持运行过程的最终数据状态

因此函数的闭包总的来说决定了两件事:闭包所对应的函数代码如何访问数据,以及闭包内的数据何时销毁。对于前者来说,涉及作用域(可见性)的问题;对于后者来说,涉及数据引用的识别。


斯文败类
269 声望26 粉丝