首页 > 代码库 > 对闭包的简单了解
对闭包的简单了解
什么是闭包?通俗的说闭包是指能读取其他函数内部的函数。这句话又是什么意思呢?我们来看个例子
function a(){ var i=0; function b(){ alert(++i); } return b; } var c=a(); c();
这段代码定义了一个函数a,在函数a的内部嵌套了另一个函数b,而这个函数a又返回函数b,在函数a的外部我们定义了一个变量c,这个变量c表面上指向的是函数a,但是根据函数a的结构可看出变量c实际上指向的是函数b。
这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。
简而言之,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。这是对闭包作用的非常直白的描述,不专业也不严谨,但大概意思就是这样,理解闭包需要循序渐进的过程。
在上面的例子中,由于闭包的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。
那 么我们来想象另一种情况,如果a返回的不是函数b,情况就完全不同了。因为a执行完后,b没有被返回给a的外界,只是被a所引用,而此时a也只会被b引 用,因此函数a和b互相引用但又不被外界打扰(被外界引用),函数a和b就会被GC回收。
对闭包的简单了解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。