学习Javascript闭包(Closure)所感

      接触编程时间不久,闭包这个问题也困扰了我许久。曾百度google之后无果,解释大多晦涩难懂。随着阅读的增加,对闭包也有了一些自己的较为清晰的理解。所谓的闭包:通俗的说就是能够读取其他函数内部变量的函数。

 

一、闭包的作用:

    1、读取其他函数内部变量。

    2、将变量存储在内存之中,防止js的垃圾回收机制。

    3、方便传参。

二、闭包的影响:

    1、内存溢出。由于阻止了变量的垃圾回收,使得变量长期存在于内存之中,性能下降,可能会导致内存溢出!

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

三、闭包的思考题:

//两道闭包的思考题,由输出的结果加深一下对闭包的理解.

题1:

 1 var name = "The Window";
 2   var object = {
 3     name : "My Object",
 4     getNameFunc : function(){
 5       return function(){
 6         return this.name;
 7       };
 8     }
 9   };
10   alert(object.getNameFunc()());

题2:

 1 var name = "The Window";
 2   var object = {
 3     name : "My Object",
 4     getNameFunc : function(){
 5       var that = this;
 6       return function(){
 7         return that.name;
 8       };
 9     }
10   };
11   alert(object.getNameFunc()());

 

你可能感兴趣的:(学习Javascript闭包(Closure)所感)