如何使用局部变量更改全局变量

How to change global variable using local variables

我正在尝试为我的网站制作一个简单的递增函数,它将处理几个不同的值,这些值将按不同的值递增。我想编写一个全局函数,这样我就不必为每个将要递增的值进行硬编码。

我在手动指定全局变量时让它工作,但对于这个项目,我将需要更改许多变量,所以这不是一个选项。是否可以 return 全局变量的值而不必手动指定要 return 哪些变量?

        let minerals = 200;
        let mineralTarget = document.querySelector("#minerals");
        let mineralGain = 1;


        function gain(target, base, gain) {
            base += gain;
            target.innerHTML = base;


        }


        window.setInterval(function(){
            gain(mineralTarget, minerals, mineralGain);
            console.log(minerals);

        },250);

我希望每次调用函数时 mineralTarget 都会递增 1,但它没有变化。

Javascript 按值传递数字,这意味着在您的函数中您总是递增原始变量的副本,而不会将更改反映回来。

然而,数组和对象是通过引用传递的。如果你设置了一个属性的对象,这样应该可以达到你想要的效果。试试这个:

let minerals = {
  "value": 200,
  "target": document.querySelector("#minerals"),
  "gain": 1
}

function gain (mineral) {
  mineral.value += mineral.gain;
  mineral.target.innerHTML = mineral.value;
}

window.setInterval(function () {
  gain(minerals);
  console.log(minerals.value);
}, 250);