从函数创建和返回对象:这可以避免垃圾收集吗?
Creating and returning object from function: can this avoid garbage collection?
如果我有一个创建对象的函数,做一些事情然后 returns 它。如果对象确实是通过引用传递的,这是否意味着创建对象的函数(或函数的作用域链)将不可用于垃圾回收?
示例代码:
function convertArrayToObj(array){
var newObj = {};
array.forEach(function(item, index){
newObj[index] = item;
});
return newObj;
}
我希望我能澄清我的疑问
它(执行上下文)将有资格进行垃圾回收。
(函数对象本身将由调用它的人保持活动状态,直到该对象死亡 - 但它不会通过返回的 'newObj' 保持活动状态。)
仅仅因为对对象的引用存储在局部变量中并不意味着该对象已获得对其创建者的引用。
如果我有一个创建对象的函数,做一些事情然后 returns 它。如果对象确实是通过引用传递的,这是否意味着创建对象的函数(或函数的作用域链)将不可用于垃圾回收?
示例代码:
function convertArrayToObj(array){
var newObj = {};
array.forEach(function(item, index){
newObj[index] = item;
});
return newObj;
}
我希望我能澄清我的疑问
它(执行上下文)将有资格进行垃圾回收。
(函数对象本身将由调用它的人保持活动状态,直到该对象死亡 - 但它不会通过返回的 'newObj' 保持活动状态。)
仅仅因为对对象的引用存储在局部变量中并不意味着该对象已获得对其创建者的引用。