关于闭包的概念
在专业文章上的关于“闭包”的定义很抽象,个人理解是,闭包可以读取其他函数内部变量的函数。所以闭包就是能把函数的内部和函数外部连接起来。比如:
<script >
function func1(){
var a=22;
function func2(){
alert(++a);
}
return func2;
}
var result= func1();
result();
</script>
这里如果没有func2作桥接就无法读取22,当然这里输出是23。
使用闭包时要注意:
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性
能问题,在 IE 中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。