简单理解闭包

废话不多说,直接先给大家一个示例。

function a() { 
 var i = 0; function b() {
 alert(++i); 

return b;
}
var c = a();
c();

这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,

为什么?

因为函数a外的变量c引用了函数a内的函数b,就是说:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

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

猜你喜欢

转载自blog.csdn.net/JOEHONV/article/details/81663416