日期:2014-05-16 浏览次数:20395 次
<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函数的资源也一直都在函数中