JavaScript作用域链特性----闭包
首先:
了解闭包,必须要清楚 JavaScript 的特性 -----> 作用域 、作用域链、执行上下文 。
闭包的构成。
闭包性能考量。
官方对于闭包的定义:
闭包 是指 有权访问另外一个函数作用域中的变量的函数
关键在于下面两点:
- 是一个函数
- 能访问另外一个函数作用域中的变量
另外的说法:
闭包可以延长(函数作用域下)变量的生命周期。 ------- 不可释放的引用
JS闭包是JavaScript函数对JS特性作用域的一种应用!!! --------让其存在一种引用关系,使之不被垃圾回收机制回收。
延伸??
因为函数内部定义的变量是局部变量,不能被外部(作用域链---外到内)的变量所访问,而函数内部的变量却可以访问函数外部的变量(作用域链---内到外)。
通过函数return --------- 避免全局变量的污染,保护私密数据。
闭包性能考量:
闭包对于浏览器---处理速度以及内存消耗方面对脚本性能具有负面影响!!!
补充:
作用域:
作用域链:
词法环境:
------执行环境栈 活动对象AO...
总结分析:
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------