javascript - for循环不修改全局变量?

标签 javascript function variables for-loop scope

这个问题在这里已经有了答案:





Is JavaScript a pass-by-reference or pass-by-value language?

(33 个回答)


5年前关闭。




我写了一个 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

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

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

最佳答案

您尝试传递的变量由 value 传递而不是 reference .所以它不会影响原始变量

您可以在 for 一次赋值循环结束

function findTotalGoals(clubsArray, totalGoals) {

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

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

关于javascript - for循环不修改全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40199592/

相关文章:

javascript - Jquery 放一个弹出窗口,直到加载整个页面

javascript - 类型错误 : is not a function

php - 检查 php 脚本的 php 版本兼容性

java - 在嵌套类 JAVA 中使用变量

javascript - 主干命名空间

javascript - 将超链接添加到 "title"标记文本

c# - 在 Func<T> 中使用 new

ios - 为什么指针无法取回新值? iOS

php从sql查询中获取大量变量

javascript - 使用变量简化 javascript