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

Posted SWT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript作用域链特性----闭包相关的知识,希望对你有一定的参考价值。

首先:

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

  闭包的构成。

  闭包性能考量。 

 

 

官方对于闭包的定义:

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

关键在于下面两点:

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

 

另外的说法:

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

 

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

  延伸??

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

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

 

闭包性能考量:

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

 

 

补充:

  作用域:

  作用域链:

  词法环境:

  

 

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

 

  总结分析:

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

 

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

 

以上是关于JavaScript作用域链特性----闭包的主要内容,如果未能解决你的问题,请参考以下文章

闭包 —JavaScript面向对象高级

JavaScript中作用域链和闭包

JavaScript---闭包和作用域链

JavaScript作用域链

javaScript闭包

JavaScript中的作用域 作用域链和闭包