javascript - 为什么该函数返回本地 JSON 变量的值而不是全局值?

标签 javascript json global-variables

我有一个全局 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;

变量 ttest 指的是同一个对象。您需要制作对象的副本以获得您正在寻找的行为。由于您使用的是 JSON,因此您可以只序列化原始对象,然后重新解析为一个新变量

var t = JSON.parse(JSON.stringify(test));

然后根据需要修改新对象

关于javascript - 为什么该函数返回本地 JSON 变量的值而不是全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719861/

相关文章:

javascript - 如何在 Node.js 中每秒发出一个 http 请求?

javascript - 按日期对 jQuery Ajax Json forEach 数据进行排序

json - 如何使用 chainlink oracle 读取 JSON 文件

ios - 不懂全局变量

c - 仅当不存在 extern 关键字时,在头文件中定义变量才有效?

javascript - jquery 按钮样式在 html 表中不起作用

javascript - 压缩 JS 文件时出现有趣的错误 - 尝试将文件夹读取为 JS 文件

javascript - jquery ajax方法未在远程服务器上触发

java - 如何在jackson中处理不同类型但相同键的json

C++ - 在另一个头文件中包含一个头文件以使全局变量可用于数组声明