javascript是否会删除我的var,而不考虑全局引用
Javascript大师,请回答三个问题:javascript是否会删除我的var,而不考虑全局引用,javascript,garbage-collection,scope,Javascript,Garbage Collection,Scope,Javascript大师,请回答三个问题: 当example()返回时,javascript将删除作用域末尾的x,或将其保留在全局数组中 我可以安全地假设javascript在python中的工作方式类似于“一切都是引用”吗 创建的所有VM是否相等,或者GC规则是否因实现而异 对x将被删除,因为其范围仅限于函数体(您使用了var关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值xhad将继续出现在global\u数组中 不完全是。对象(数组也是!)作为引用
x
将被删除,因为其范围仅限于函数体(您使用了var
关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值x
had将继续出现在global\u数组中
x
正在引用对象,因此分配(通过push()
)正在增加引用计数。当函数结束时x
超出范围时,这不会将引用计数减少到0,因此对象仍将在那里-它现在从global\u array
中唯一的引用
x
将被删除,因为其范围仅限于函数体(您使用了var
关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值x
had将继续出现在global\u数组中
由于
x
正在引用对象,因此分配(通过push()
)正在增加引用计数。当函数结束时x
超出范围时,这不会将引用计数减少到0,因此对象仍将在那里-它现在从global_array
中唯一的引用这个问题确实不清楚。“删除”meen是什么意思?GC'd?从内存中删除XT引用的对象此问题确实不清楚。“删除”meen是什么意思?GC'd?从内存中删除x引用的对象
window.global_array = new Array();
window.example = function()
{
var x = new Object();
x['test_property'] = 3;
global_array.push(x);
}