我有一个全局 JSON 变量,我在其中存储了一些参数,然后每次运行该函数时,我都希望能够修改它们,但只能在该函数内部修改。
所以每次我运行该函数时,我都希望在本地变量中有一个全局变量的新副本。
问题是我将全局变量复制到函数中定义的局部变量,并且对局部变量进行了更改,但是下次运行该函数时,却得到了全局变量的完整副本,我我有一个我已经修改过的东西。
谢谢! :)
var test = {"name":"me"};
function bla() {
var t=test;
t.name="you";
t.age=55;
alert(test.name); // Returns "you" that have been set locally instead of "me" that was global value.
}
bla();
最佳答案
对象通过引用赋值,所以之后
var t=test;
变量 t
和 test
指的是同一个对象。您需要制作对象的副本以获得您正在寻找的行为。由于您使用的是 JSON,因此您可以只序列化原始对象,然后重新解析为一个新变量
var t = JSON.parse(JSON.stringify(test));
然后根据需要修改新对象
关于javascript - 为什么该函数返回本地 JSON 变量的值而不是全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719861/