gpt4 book ai didi

javascript - 卡住javascript中的变量值

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

我在 javascript 中的特定时间保存变量值时遇到问题。在基本层面上,在下面的代码中,我希望变量“b”保持分配给它的值

var a = [];
var b = '';
var c = 'value';

a.push(c);
b = a;
console.log(b); // b = ["value"]
a.push(c);
console.log(b); // b = ["value", "value"], but i want it to be just ["value"]

我见过使用闭包解决类似问题的各种解决方案,例如这个问题:Intentionally "freezing" a javascript variable using a self-executing function .我在这个 Jsbin 中尝试过该解决方案但未成功:http://jsbin.com/zusara/1/edit?js,console .

如有任何帮助,我们将不胜感激。谢谢,最好!

最佳答案

将数组分配给变量不会创建副本。因此,ab 变量都指向同一个数组,通过任一变量所做的任何更改都会显示在另一个变量中。

如果你想在 Javascript 中复制一个数组,那么你必须明确地制作一个数组的副本。

var a = [];
var c = 'value';
a.push(c);
// make shallow copy of a into b
var b = a.slice(0);

b 现在包含一个完全独立的数组,a 的修改不会影响 b

注意:这是浅拷贝,不是深拷贝,是数组的解决方案。浅拷贝不会复制数组中的对象或这些对象中的对象。进行深层复制需要更多代码,但通常不需要,而且对于您提供的示例,您的情况似乎也不需要。


如果你想要一个深拷贝并且也想包含对象,而不仅仅是数组(我提供了一个数组的浅拷贝的简单解决方案),你可以看到这个引用,这里有很多选择和争论:

What is the most efficient way to deep clone an object in JavaScript?

关于javascript - 卡住javascript中的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851874/

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