日期:2014-05-16 浏览次数:20471 次
<script type="text/javascript">
  	var n = 1;//全局变量
  	function test1(){
  		var n2 = 2;//局部变量
  	}
  	alert(n2);//不能访问局部变量
  </script><script type="text/javascript">
  	var n = 1;
  	function test1(){
  		var n2 = 2;
  		function inner(){ //inner是test1的嵌套函数,inner的存在依赖于test1
  			return n2;
  		}
  		return inner;  //注意:返回的是inner函数
  	}
  	
  	var value = test1(); //全局变量value引用inner函数(test1函数返回的是inner函数)
  	alert(value());//返回2
  </script>上面注解的3行就构成了”闭包“<script type="text/javascript">
  	var n = 1;
  	function test1(){
  		var n2 = 2;
  		function inner(){ 
  			n2++;//n2=3
  			return n2;
  		}
  		return inner;  
  	}
  	
  	var value = test1(); 
  	value();//n2=3
  	value();//n2=4
  	alert(value());//n2=5
  </script>解释:因为全局变量value引用函数inner,inner依赖于test1函数,全局变量一直都在内存中,所以test1函数的资源也一直都在函数中