通过函数将值添加到变量

时间:2019-03-01 11:59:39

标签: javascript

在我正在开发的游戏中,我有一个应该根据指数水平触发的推进系统:

function machinesOwnedAdvancement(machine,machineLevel) {
  if (machine >= Math.pow(2,(machineLevel+5))) {
    console.log(machineLevel);
    machineLevel += 1;
    console.log("Machine is upgraded. It is now level: " + machineLevel);
  }
}

该函数将这样调用:

machinesOwnedAdvancement(scribes, scribesAdvancementLevel);

这里scribes是拥有的机器数,而scribesAdvancementLevel最初是0。想法是,它应该“将”进步等级加1。 console.log建议这样做,但是当下一个游戏计时发生时(即再次调用该函数),console.log(machineLevel)仍为0。

也许我误会了如何使用函数参数来操纵变量?

1 个答案:

答案 0 :(得分:1)

machineLevel是一个局部变量,这意味着只要函数存在,它就会丢弃该变量。您应该返回一个值,然后将其存储在一个变量中,以便以后传递给它。

这是一个非常简单的例子。

let scribe = 10,
    advancementLevel = 1;

function machinesOwnedAdvancement(machine,machineLevel) {
  if (machine >= Math.pow(2,(machineLevel+5))) {
    console.log(machineLevel);
    machineLevel += 1;
    console.log("Machine is upgraded. It is now level: " + machineLevel);
  }
  return machineLevel;
}

advancementLevel = machinesOwnedAdvancement(scribe, advancementLevel);
console.log(advancementLevel);