Javascript for循环不修改全局变量?

Javascript for循环不修改全局变量?,javascript,function,variables,for-loop,scope,Javascript,Function,Variables,For Loop,Scope,我写了一个for循环,出于某种原因拒绝修改全局变量。相反,它似乎创建了一个临时修改的局部变量。我的代码的压缩版本如下 var clubsArray = [obj, obj, obj]; //each obj contains a property of "goalsFor" which holds an integer var madridTotalGoals = 0; var barcaTotalGoals = 0; function findTotalGoals(clubsArray,

我写了一个for循环,出于某种原因拒绝修改全局变量。相反,它似乎创建了一个临时修改的局部变量。我的代码的压缩版本如下

var clubsArray = [obj, obj, obj];

//each obj contains a property of "goalsFor" which holds an integer

var madridTotalGoals = 0;
var barcaTotalGoals = 0;

function findTotalGoals(clubsArray, totalGoals) {

    for(var i = 0; i < clubsArray.length; i++) {

        totalGoals += clubsArray[i].goalsFor;
    }
}

findTotalGoals(clubsArray, barcaTotalGoals);

// this loops properly and does the math, but it never changes the value of barcaTotalGoals
var clubsArray=[obj,obj,obj];
//每个obj都包含一个“goalsFor”属性,该属性包含一个整数
var madridTotalGoals=0;
var barcaTotalGoals=0;
函数findTotalGoals(clubsArray、totalGoals){
对于(变量i=0;i
在完整的代码中,有许多数组包含“club”对象;每个都包含一个属性键“goalsFor”,该属性键将整数作为值保存。还有许多全局声明的“totalGoals”变量(此处指定了两个)


有人知道全局变量(例如barcaTotalGoals)在通过此函数时没有被修改的原因吗?当我记录这个循环的每个步骤时,数学运算正在进行,但结果没有被存储。如果以前有人问过这个问题,我很抱歉,但我已经彻底搜索过了。

您试图传递的变量是通过
值传递的,而不是
引用的。所以它不会影响原始变量

完成
for
循环后,可以分配该值

function findTotalGoals(clubsArray, totalGoals) {

    for(var i = 0; i < clubsArray.length; i++) {

       totalGoals += clubsArray[i].goalsFor;
    }
    barcaTotalGoals = totalGoals;
}
函数findTotalGoals(clubarray,totalGoals){
对于(变量i=0;i
您是通过值传递,而不是通过引用传递。。。 相反,您可以这样尝试:

clubsArray = [obj, obj, obj];

var totalGoals = {
    madrid: 0,
    barca: 0
}

function goalsByCountry(clubsArray, totalGoalsClub) {

    for(var i = 0; i < clubsArray.length; i++) {

        totalGoals[totalGoalsClub] += clubsArray[i].goalsFor;

    }

}

goalsByTeam(clubsArray, 'barca');
clubsArray=[obj,obj,obj];
var totalGoals={
马德里:0,,
巴萨:0
}
功能目标国(俱乐部阵列、总目标俱乐部){
对于(变量i=0;i
JavaScript是按值传递的
totalGoals
获取
barcaTotalGoals
的值,但不修改它。对
totalGoals
的修改不会改变
barcaTotalGoals
。如果存在重复项,请关闭投票。感谢您的仓促响应,您必须原谅我的无知,但如果我想使用该函数修改多个变量(例如,12)我如何在不重复12次函数的情况下继续执行该操作?@AndrewLi该链接肯定会帮助OP了解按值传递和引用之间的区别,但OP可能甚至不知道这取决于此概念,并且没有必要对stackoverflow的任何新参与者非常苛刻,这只是我的观点链接对新用户来说并不苛刻,见鬼,它为他们指明了正确的方向。重复链接并不是说一个问题是坏的或无效的,只是说它以前被问过。无论用户的经验有多丰富,复制品都是一种选择duplicate@roz0n你能详细说明一下你的要求吗?