JavaScript中全局变量的问题

JavaScript中全局变量的问题,javascript,jquery,json,Javascript,Jquery,Json,JavaScript中全局变量的问题 大家好,我面临JavaScript中全局变量的问题。我的问题如下 为什么每当我修改另一个输入变量“数据””时,全局变量“g_MobileAssociatedPlans”就会更新 请查看上面的示例,并查看它,然后将问题回复给我。 谢谢大家! 这是因为JavaScript中的对象是通过引用传递的。尝试。因为您指定的是对象而不是值,所以它将指定对象引用,为了获得所需的输出,您必须克隆对象 g_MobileAssociatedPlans = JSON.parse(J

JavaScript中全局变量的问题

大家好,我面临JavaScript中全局变量的问题。我的问题如下

为什么每当我修改另一个输入变量“数据””时,全局变量“g_MobileAssociatedPlans”就会更新

请查看上面的示例,并查看它,然后将问题回复给我。
谢谢大家!

这是因为JavaScript中的对象是通过引用传递的。尝试。

因为您指定的是对象而不是值,所以它将指定对象引用,为了获得所需的输出,您必须克隆对象

g_MobileAssociatedPlans = JSON.parse(JSON.stringify(data));

g_MobileAssociatedPlans = jQuery.extend({}, data);

您正在传递引用。没有价值。只能通过引用传递基元类型(如数字、布尔值)。并且,对象是按值传递的。 如果不需要引用,请克隆对象。
克隆JSON对象的最简单方法是
JSON.parse(JSON.stringify(originalObject))


请参阅

请按如下方式更新您的代码

var g_MobileAssociatedPlans = "";
$(function () {
    var data = { "Item1": "Burger", "Item2": "Soft Drink" };
    displayMobileDevices(data);
});

function displayMobileDevices(data) {
    g_MobileAssociatedPlans = JSON.parse(JSON.stringify(data));
    alert(JSON.stringify(g_MobileAssociatedPlans));
    data.Item1 = "Wine";
    alert(JSON.stringify(g_MobileAssociatedPlans));
}

displayMobileDevices
功能中,您将
data
的引用分配给
g_MobileAssociatedPlans
,因此每当
data
发生变化时,
g_MobileAssociatedPlans
也会发生变化。您的问题是什么?我在这里找不到任何问题。有什么问题吗?而且数据不是变量,而是对象。对象通过引用传递
var g_MobileAssociatedPlans = "";
$(function () {
    var data = { "Item1": "Burger", "Item2": "Soft Drink" };
    displayMobileDevices(data);
});

function displayMobileDevices(data) {
    g_MobileAssociatedPlans = JSON.parse(JSON.stringify(data));
    alert(JSON.stringify(g_MobileAssociatedPlans));
    data.Item1 = "Wine";
    alert(JSON.stringify(g_MobileAssociatedPlans));
}