闭包
function Foo() {
var i = 0;
return function() {
console.log(i++);
}
}
var f1 = Foo(),
f2 = Foo();
f1();
f1();
f2();
0 1 0
函数在执行完了之后它和它的局部变量就会被销毁,但是foo函数返回了一个匿名函数的引用(即一个闭包),它可以访问foo()被调用产生的环境,而局部变量i则一直处于在这个环境中,只要一个环境可能被访问到,那么就不会被销毁,所以前两个是0,1
因为foo()返回的是一个匿名函数,所以f1,f2相当于指向了两个不同的函数对象,所以f2()为0