for循环不修改全局变量?

6 javascript variables scope for-loop function

我编写了一个 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
Run Code Online (Sandbox Code Playgroud)

在完整的代码中,有许多数组保存“club”对象;每个都包含一个属性键“goalsFor”,它保存一个整数作为值。还有许多已全局声明的“totalGoals”变量(此处指定了两个)。

有谁知道为什么全局变量(例如 barcaTotalGoals)在通过此函数时没有被修改?当我控制台记录此循环的每个步骤时,数学正在进行,但结果没有被存储。如果之前有人问过这个问题,我深表歉意,但我已经彻底搜索过。

Abh*_*nav 3

您尝试传递的变量是通过value而不是传递reference。所以不会影响原来的变量

for循环完成后即可赋值

function findTotalGoals(clubsArray, totalGoals) {

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

       totalGoals += clubsArray[i].goalsFor;
    }
    barcaTotalGoals = totalGoals;
}
Run Code Online (Sandbox Code Playgroud)