关于js的闭包

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

简单的理解:指有权访问另一个函数作用域中的变量的函数

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

使用闭包的注意点

1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值

var person = function(){

    //变量作用域为函数内部,外部无法访问

    var name = "default";

    return {

       getName : function(){

           return name;

       },

       setName : function(newName){

           name = newName;

       }
    }

}();

print(person.name);//直接访问,结果为undefined

print(person.getName());

person.setName("abruzzi");

print(person.getName());