下列代码存在几个变量没有被回收?( )
var i = 1;
var i = 2;
var add = function() {
var i = 0;
return function()
{
i++;
console.log(i);
}
}();
add();
3个
1:全局变量i不会被回收
2:全局变量add不会被回收
3:闭包引用的局部变量i不会被回收
代码回收规则如下:
1.全局变量不会被回收。
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收
有3个变量没有被回收,
首先是全局变量中的i,第二行会覆盖掉第一行,因此只有1个。
第二个是var add,这个变量也没有回收,他定义了一个匿名函数,并将它赋给了add。
第三个就是闭包中的变量i,闭包中的局部变量是不会被回收的,因此是3个变量没有被回收。