这个问题总的来说,如果在X时间内不受影响,我的变量是否会被另一个传递或动态变量设置?
我查看了ECMAScript规范,但我仍然对收集垃圾的内容和内容感到困惑。我看了Lifetime of JavaScript variables,答案是
“如果标识符可以访问(通过直接指针或闭包),则不应该是Garbage Collected。”
所以我开始做对了吗?
如果变量由另一个传递的值设置,基本上会发生垃圾收集。
在三元运算符中怎么样?
我在两个不同的功能之间轮流使用ternary operator
作为switch
,每个月运行3个,它会知道它在3个月之前condition 1
执行condition 2
或者是condition 1
我有垃圾收集的风险,每次都会运行private SortedMap<Move,State> children= null;
?
答案 0 :(得分:1)
在之后或之后对变量值进行垃圾收集,因为不再有对变量的引用。
回想一下Javacript中的数组和对象是通过引用传递的,所以如果
var a={}, b=a;
a
指向的对象有两个引用:a
和b
。
a=null;
使对象只有一个引用b
,因此它不是垃圾收集的候选对象。
b=null;
现在该对象没有引用,因此它成为集合的候选对象。
就封闭而言,同样适用于:
b=function(){
var a={};
return a;
};
其中b
是对a
引用的“已结束”对象的引用。
函数完成后,a
超出范围,然后不再是对象的引用。
虽然b
在范围内,但在
b=null;
释放要收集的对象。
无参考值时,垃圾回收取决于JavaScript引擎,通常不受您的直接控制。
有很多方法可以触发显式集合,但在大多数情况下很少需要。