如何在函数中递增/递减后使返回变量保持新值?

时间:2017-08-01 13:44:21

标签: javascript

每次运行此函数时,p1_Balance将始终重置为10并且不会保持增量或减量的新值。

function Balance() {
  var p1_Balance=10;
  var x= Math.floor(10*Math.random());
  if (x<5) {
    p1_Balance=p1_Balance-1;
  } else {
    p1_Balance=p1_Balance+1;
  }
  return p1_Balance;
}

4 个答案:

答案 0 :(得分:0)

p1_Balance传递给函数,而不是每次调用函数时都将其初始化:var p1_Balance = 10;

答案 1 :(得分:0)

可能有几种解决方案: 一个是将p1_Balance声明为全局变量。

var p1_Balance=10;
function Balance(){

var x= Math.floor(10*Math.random());
if (x<5) {
  p1_Balance=p1_Balance-1;
}
else {
  p1_Balance=p1_Balance+1;
}
return p1_Balance;
}

另一个是你可以将余额作为函数参数传递:

function Balance(p1_Balance){

var x= Math.floor(10*Math.random());
if (x<5) {
  p1_Balance=p1_Balance-1;
}
else {
  p1_Balance=p1_Balance+1;
}
return p1_Balance;
}

.....

value = Balance(10);// value=something that you want to change by that function.

答案 2 :(得分:0)

p1_Balance应该在函数范围之外声明(意味着不在函数本身内)。否则,每次调用该函数时,将值设置为10的初始化程序也会运行。

var p1_Balance=10;
function Balance(){ ...

答案 3 :(得分:0)

您可以使用Javascript closures创建一个能够满足您需求的功能,如下所示:

var Balance = (function() {
  var p1_Balance = 10;
  return function() {
    var x = Math.floor(10 * Math.random());
    if (x < 5)
      return p1_Balance += 1;
    else
      return p1_Balance -= 1;
  };
})();

for (var i = 0; i < 10; i++)
  console.log(Balance());

或者,您需要在函数外部定义p1_Balance变量或将其作为参数传递。