gpt4 book ai didi

javascript - 将 var 分配给临时 var 不会阻止原始 var 发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:23 28 4
gpt4 key购买 nike

好吧,堆栈溢出,

我花了几个小时来解决 javascript 中的问题(在 NodeJS 服务器中编写),但我真的不明白。

这就是发生的事情:

var data = {x: 50};
var temp = data;
temp.x = 100;
console.log(data.x);
//logs 100

我已经测试了这个确切的代码,它确实显示了 100

我的问题:

如何将变量克隆到临时变量并更改临时变量而不更改原始变量。

最佳答案

您必须克隆原始对象。这是因为将对象存储在另一个变量中不会创建与前一个对象具有相同属性的新对象;而是会创建一个与前一个变量具有相同属性的新对象。它只是创建对同一对象的引用。遗憾的是,没有任何内置解决方案可以解决这个问题,但有一些解决方案。这里有一些我想到的:

var temp = JSON.parse(JSON.stringify(data)); // clones the object using a hack

或者:

var temp = {}; // creates a new object and gives it all the same properties as
// the old one.
for(prop in data) {
if(data.hasOwnProperty(prop)) {
temp[prop] = data[prop];
}
}

不是为了 self 推销,但我已经写了一篇关于这个主题的博客文章,其中更详细一些。您可以找到here .

关于javascript - 将 var 分配给临时 var 不会阻止原始 var 发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595359/

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