如何使变量在同一个重复函数中交替取值

How can I make variables alternate values within the same repeating function?

本文关键字:函数 变量 何使 同一个      更新时间:2023-09-26

好吧,所以我的问题的答案可能不是问题所在,但无论如何都可以。

基本上,这是计算器程序的一部分。我需要知道如何仅在上执行此函数的第一次时使用var y(假设它可能会重复执行),并将变量x转换为该值,并在每次后续执行时保持该值。。。同时当调用另一个想要改变其值的函数时仍然允许CCD_ 2被改变。这是我的程序中唯一一个我没能弄清楚的部分。

本质上,我试图模拟一个常见的计算器功能,如果用户按下1+2,然后按下=,则计算将呈现3,然后在每次按下=(即1+2=3=5=7……)时增加第二个数字(在这种情况下为2)的值。我的计算器现在正在做相反的事情(即1+2=3=4=5=6………)。

(我已经尝试了很多事情……现在在函数的末尾,我有mathSign = null,它可以防止程序在没有另一个函数首先重新设置值的情况下多次运行……我没有在发布的代码中留下这一部分,因为我的最终目标是不必使用它。)

function result(){
  var x = output.original_value;
  var y = parseFloat(output.value);
  if(mathSign == '+'){
    output.value = x + y;
  }
  else if(mathSign == '-'){
    output.value = x - y;
  }
  else if(mathSign == '*'){
    output.value = x * y;
  }
  else if(mathSign == '/'){
    output.value = x / y;
  }
  else if(mathSign == 'n^'){
    output.value = Math.pow(x,y);
  }
  else if(mathSign == 'reciprocal'){
    output.value = 1 / output.original_value;
    mathSign = null;
  }
  else if(mathSign == 'sqrt'){
    output.value = Math.sqrt(output.original_value);
    mathSign = null;
  }
  output.result = output.value;
}

您可以尝试类似的东西

  if( typeof result.first == 'undefined' ) {
        result.first = 0;
        result.y = parseFloat(output.value);
        alert (result.y);
        var y = result.y;
    }
    else 
    {
        var y = result.y;
        alert (y);
    }

把它放在这里,而不是var y=parseFloat(output.value),基本上它首先检查一些静态变量,如果它被设置了,如果它没有(第一次通过),你设置y,每隔一次你只使用第一个y

这最终成为解决我问题的最佳方法。它本质上是一个可变切换器,与我的计算器代码的其余部分配合得非常好:-)

function variable_toggle(){
  output.variable_toggle;
  if(output.value == mathSign){
    output.value = output.original_value;
  }
  if(output.variable_toggle != false){
    var x = output.original_value;
    var y = parseFloat(output.value);
    output.toggled_value = parseFloat(output.value);
    result(x, y);
    output.variable_toggle = false;
  }
  else{
    var x = parseFloat(output.value);
    var y = parseFloat(output.toggled_value);
    result(x, y);
  }
}