var a = function(){ var i = 0; return function(){ ++i; } }() a();//1 a();//2 var b = function(){ var i = 0; return ++i; } b();//1 b();//1
对于第一个, i 由于被闭包引用所以没被回收,这是可以理解的。但是,对于第二个例子,我们不用闭包的时候之所以i每次都为0是因为每次都运行了var i= 0,这跟回收没关系吧?那怎么理解“函数运行完后变量就被回收”这句话呢?我们定义一个全局变量:var grobal = 10; 它为什么没被回收?
minip
相关分类