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