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