变量回收

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

var i = 1;
var i = 2; 
var add = function() {
  var i = 0;
  return function(){
    i++;  
    console.log(i);
  }
}();
add();

有3个变量没有被回收,首先是全局变量中的i,第二个var i = 2;声明被忽略,赋值覆盖了

第二个是var add,这个变量也没有回收,他定义了一个匿名函数,并将它赋值给了add

第三个闭包中的i,闭包读取函数内部的变量,并让这些变量始终保存在内存中

 

posted @ 2021-01-26 16:05  zeal666  阅读(101)  评论(0)    收藏  举报