重新分配javascript变量是否会立即从内存中清空其先前的值?

时间:2013-12-23 09:26:18

标签: javascript memory-management garbage-collection

假设全局窗口范围内有以下内容:

var myvar = "initial value";
//some other code
myvar = "new value";

分配新值后,旧值是否从内存中销毁? 它会被垃圾收集吗?我的分析测试表明内存已经立即释放。

在函数范围内声明时也是同样的问题。

var myfunct = function(){
  var myvar = "initial value";    
  //some other code
  myvar = "new value";
}

PS:一般来说,无需回答垃圾收集。我已经理解了它是如何工作的......我只是在这个问题的内存重新分配方面之后。我知道全局变量永远不会被收集。但我很好奇,如果内存重新分配也会在根处得到不同的处理。

1 个答案:

答案 0 :(得分:1)

由于javascript中的字符串是不可变的,字符串变量是引用,因此没有“内存重新分配”。

如何以及何时释放死值完全取决于GC。 AFAIK标准对这方面的实施几乎没有限制,我不相信有“立即发布”这样的概念。因此,正如RobG所指出的那样,很难说一般性。