闭包的本质就是:函数A的内部函数B被A以外的函数C调用了。这样一个闭包的函数在返回时有没有释放资源的栈区。 闭包
了解js的闭包首先要清楚变量做用域的问题函数
那么想要从外部获取内部的变量值该如何作呢?spa
咱们能够在demo02中定义一个内部函数:code
var index02 = 3;
function inner02(){
alert(index02);
}
return inner02;
}
var getnum = demo02();//至关于获取到了inner02
getnum();//弹出结果3对象
inner02就是闭包。blog
addone=function(){
index03++;
}
function inner03(){
alert(index03);
}
return inner03;
}
var getnum = demo03();
getnum();//弹出结果99
addone();//index03的值增长1 addone自己是全局变量它的值是一个匿名函数,而匿名函数自己也是闭包,能够在函数外部对函数内部的变量进行操做。
getnum();//弹出结果100生命周期
因此滥用闭包可能致使内存泄露,由于闭包使得变量一直在内存中不会被垃圾回收。内存
若是把demo03当作对象,index03表明属性,inner03表明公开的方法,也要注意不要随便修改内部的属性值。 资源