JavaScript作用域链特性----闭包

sunlizhen 2020-04-17

首先:

了解闭包,必须要清楚  JavaScript 的特性 -----> 作用域 、作用域链、执行上下文  。

闭包的构成。

闭包性能考量。 

官方对于闭包的定义:

闭包 是指  有权访问另外一个函数作用域中的变量的函数 

关键在于下面两点:

  • 是一个函数
  • 能访问另外一个函数作用域中的变量

另外的说法:

闭包可以延长(函数作用域下)变量的生命周期。   -------   不可释放的引用    

JS闭包是JavaScript函数对JS特性作用域的一种应用!!!   --------让其存在一种引用关系,使之不被垃圾回收机制回收。

  延伸??

因为函数内部定义的变量是局部变量,不能被外部(作用域链---外到内)的变量所访问,而函数内部的变量却可以访问函数外部的变量(作用域链---内到外)。

通过函数return   ---------    避免全局变量的污染,保护私密数据。

闭包性能考量:

闭包对于浏览器---处理速度以及内存消耗方面对脚本性能具有负面影响!!!

补充:

作用域:

作用域链:

词法环境:

------执行环境栈    活动对象AO...

总结分析:

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

相关推荐