首页 > Web开发 > 详细

关于js闭包官方解释庖丁解牛式理解

时间:2017-02-16 14:07:42      阅读:143      评论:0      收藏:0      [点我收藏+]

闭包:是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

 

变量+环境

 

 

首先按这个句子主谓宾来分解。闭包是一个表达式,通常是一个函数。

这意味着第一它是表达式,不是语句,语句是以";"作为结束的,或者某些情况省略分号也可以。

如下:function foo(){
   return function(){console.log(arguments);}
}

函数foo在执行后返回一个闭包,这个闭包是一个函数,并且这个函数在foo外可以访问foo函数输入的参数。

所以定义中所说的拥有许多变量,这个变量指的是只能在foo内部访问的foo的私有变量,即父级直至根函数的所有私有变量。

绑定了这些变量的环境指的是返回的这个闭包构成的上下文环境对父级直至根函数的所有私有变量实施了绑定,也即在闭包返回到闭包所在的作用域之外后仍可以访问他所在作用域的私有变量。闭包是拥有一个环境的,因此在函数中return 变量X,并不构成闭包。一个变量不足以成为一个环境。

 

简言之:简而言之,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。

 

以上正是闭包的意义所在。

 

疑问:闭包通常是函数表达式,言下之意是还有什么情况产生闭包?没找到。求解!

关于js闭包官方解释庖丁解牛式理解

原文:http://www.cnblogs.com/jiangtian/p/6404993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!