View Code
<script language="javascript" type="text/javascript">
/*
一个简单的计数器
*/
function counter(iden,addi){
return function(){
iden=iden+addi;
return iden;
}
}
var c1=counter(0,1);
var c2=counter(10,-1);
for(var i=0;i<10;i++){
c1();
}
/*Javascript变量在for() if() switch() 等等没有作用域
alert(i) //输出:10
*/
for(var i=0;i<10;i++){
alert(c2());
}
/*
外部环境的读写和闭包出现在函数体内的顺序没有关系
理解:createClosure2()函数return a时才创建Function对象a,
变量x在创建对象之前,所以跟顺序没有关系
*/
function createClosure(){
var x=10;
return function(){
return x;
}
}
function createClosure2(){
function a(){
return x;
}
var x=10;
return a;
}
</script>