下列代码存在几个变量没有被回收?
var i = 1;
var i = 2;
var add = function() {
var i = 0;
return function() {
i++;
console.log(i);
}
}();
add();
答案: 3个。
代码回收规则如下:
1.全局变量不会被回收。(i和add 第二行中的var被忽略,但i=2会让i被重新赋值为2)
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.闭包中的局部变量是不会被回收的(i)