gpt4 book ai didi

javascript - 在单行中动态设置嵌套对象

转载 作者:行者123 更新时间:2023-11-30 10:01:20 25 4
gpt4 key购买 nike

我对以下代码有疑问。我正在创建一个嵌套对象,我想在一个简短的行中创建它。我从这个answer here得到了这个想法.我也不打算将此代码用于生产。我被警告说 temp“可能”是泄漏。这只是我能够生成的示例。我明白 newSeasonstemp 被分配给内存中的同一个对象,这就是为什么这一切都是可能的。

这实际上会造成内存泄漏吗?

有问题的行是:

var newSeasons = temp = {}; temp[yr] = data;

您可以测试 code here .

function parseData (yr, stat, data) {

// The way I've been taught
var oldSeasons = {};
oldSeasons[yr] = data;
console.log('The way Ive been taught\n');
console.log(oldSeasons);


console.log('\n****************************\n');


// Experimental way
var newSeasons = temp = {}; temp[yr] = data;
console.log('Experimental way');
console.log(newSeasons);
}

var data = {
Pos: '1B',
Age: '33',
G: '116',
stat:'batting',
yr: '2005',
H:'89',
R: '42',
RBI: '48'
};

parseData(data.yr,data.stat,data);

最佳答案

由于您没有将 temp 声明为 var temp,您实际上是在分配给 window.temp,即分配给一个全局变量 (假设我们在浏览器中谈论 JS)。该对象在不再需要时不会被垃圾回收,除非您明确删除全局引用或重新分配它。

编辑: 这本身并不是“内存泄漏”:每次调用该函数时,您都在重复使用相同的全局引用,因此不存在逐渐锁定可用空间的风险无用的数据。但是,它构成了资源的次优使用。

关于javascript - 在单行中动态设置嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31503649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com