document.write('
解析:
function a(){
 var i=0;
 function b(){
 alert(++i);
 }
 return b;
}
var c=a();
c();
这是个标准的闭包。在函数 a 中,定义了函数 b,a 又 return 了 b 的值。
var c=a();
c();
这两句执行很重要。var c=a(); 在这里执行了 a 函数,那么 a 肯定经过了
return,按照主流语言的函数特性,现在 c 的值就是 a 的返回值。
第二行 c() 实际执行的就是 b 的函数。最后不管执行的是谁,会弹出一个值
为 0 的窗口。到此为止,按理论来说所有的生命周期就算是全部结束了。可是
如果我们再多执行一行 var c=a(); c();c(); 第一次弹出 0,第二次弹出执行的却是

1。也就是说第一次 c() 后,a 中的 i 依然保留,所以 a 在内存的栈区依然保留。 

');