下列代码存在几个变量没有被回收?( )

发布时间 2023-11-11 11:55:49作者: 龙陌

下列代码存在几个变量没有被回收?( )

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个变量没有被回收。