没有引用的对象文字内存分配

时间:2017-11-20 03:16:17

标签: javascript

我是JavaScript的新手。我在全局环境中运行以下代码,它不会抛出任何错误。 下面的代码是否会为对象文字分配内存空间?或者它将由垃圾收集器收集。

{ firstname: "ABC",
 lastname: "XYZ",
 greet: function(){ 
             console.log('Hola '+ firstname+ ' ' +lastname+ '!');}
}

2 个答案:

答案 0 :(得分:0)

您需要将对象分配给某个变量,否则会出错。 如果将此Object分配给变量,那么它将保留在内存范围内。

在该范围的外侧,您无法访问此变量。当超出范围时,变量将被垃圾收集。

答案 1 :(得分:0)

需要将对象分配给JavaScript中的变量。

您可以将{name: "Parker", coolness: 100}直接放在JavaScript解释器中,它可以正常工作。

同样重要的是要注意垃圾收集器不会仅基于范围进行垃圾收集。现代垃圾收集器更先进。大多数JavaScript垃圾收集器使用所谓的标记和扫描算法。如果对象没有对自身的引用,则将其标记为无法访问。

基本上在标记和扫描中,垃圾收集器会查找对名为 roots 的对象的所有引用。在JavaScript中, root 对象是全局对象。垃圾收集器将以递归方式查找每个对象的引用,并且以这种方式找不到的任何对象都被认为是无用的并且是垃圾收集的。显然这是一个简单的解释,如果你感兴趣,你应该更多地研究它。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management