javascript是否会删除我的var,而不考虑全局引用

javascript是否会删除我的var,而不考虑全局引用,javascript,garbage-collection,scope,Javascript,Garbage Collection,Scope,Javascript大师,请回答三个问题: 当example()返回时,javascript将删除作用域末尾的x,或将其保留在全局数组中 我可以安全地假设javascript在python中的工作方式类似于“一切都是引用”吗 创建的所有VM是否相等,或者GC规则是否因实现而异 对x将被删除,因为其范围仅限于函数体(您使用了var关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值xhad将继续出现在global\u数组中 不完全是。对象(数组也是!)作为引用

Javascript大师,请回答三个问题:

  • 当example()返回时,javascript将删除作用域末尾的x,或将其保留在全局数组中
  • 我可以安全地假设javascript在python中的工作方式类似于“一切都是引用”吗
  • 创建的所有VM是否相等,或者GC规则是否因实现而异
  • x
    将被删除,因为其范围仅限于函数体(您使用了
    var
    关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值
    x
    had将继续出现在
    global\u数组中
  • 不完全是。对象(数组也是!)作为引用传递,原始值(如数字)将被复制
  • GC将因实现而异,但这不应引起您的关注。JavaScript实现的行为将是相同的,除非有bug
  • 由于
    x
    正在引用对象,因此分配(通过
    push()
    )正在增加引用计数。当函数结束时
    x
    超出范围时,这不会将引用计数减少到0,因此对象仍将在那里-它现在从
    global\u array
    中唯一的引用

  • x
    将被删除,因为其范围仅限于函数体(您使用了
    var
    关键字,这确保了这一点。未声明var的变量将是全局变量,即使在函数体中也是如此)。但是,值
    x
    had将继续出现在
    global\u数组中
  • 不完全是。对象(数组也是!)作为引用传递,原始值(如数字)将被复制
  • GC将因实现而异,但这不应引起您的关注。JavaScript实现的行为将是相同的,除非有bug

  • 由于
    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);  
    }