日期:2014-05-16  浏览次数:20414 次

javasrcipt系列---js闭包
    在看书遇到了讲解js闭包的地方,讲的太学术了 根本不明白 最近在网上搜集了些资料 发现了一些通俗易懂的讲解 终于弄明白了,要理解闭包,首先必须理解Javascript特殊的变量作用域。
    变量的作用域无非就是两种:全局变量和局部变量。
    Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。
    Js代码:
        alert(n);
     }
      var n=999;
     }
     n=10;
     }
     所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁
 以下是个js闭包的使用  其中内部函数getNum()就是个闭包函数, nAdd是个全局的匿名闭包函数
   var n = 10;
   nAdd = function(count){
       n += count;
   }
   function getNum(){
       alert(n);
   }
}
    one();
    nAdd(2);
}
    var object = {   
        name : "My Object",   
 	getNameFunc : function(){   
	return function(){   
	return this.name;   
	};   
     }   
};   
	alert(object.getNameFunc()()); //The Window
	最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object
         name不是全局变量么? 外层的name不应该被object中的覆盖么?
	最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object
	name不是全局变量么? 外层的name不应该被object中的覆盖么?
	var object = {   
	   name : "My Object",   
	   getNameFunc : function(){   
		return function(){   
		return name;   
	   };   
	}   
	};   
	alert(object.getNameFunc()()); //The Window
	var name = &quo