Как я могу сделать переменные переменные значения в пределах одной и той же повторяющейся функции? - PullRequest
1 голос
/ 02 февраля 2012

Хорошо, поэтому ответ на мой вопрос может и не быть проблемой, но в любом случае здесь дело.

По сути, это одна из частей программы калькулятора.Мне нужно знать, как я могу взять var y на только первое выполнение этой функции (при условии, что она, вероятно, будет выполняться неоднократно) и преобразовать переменную x в это значение и сохранить это значение длякаждое последующее выполнение ... при этом допускается изменение output.original_value при вызове другой функции, которая хочет изменить свое значение.Это единственная часть моей программы, которую я не смог понять.

По сути, я пытаюсь эмулировать обычную функцию калькулятора, где, если пользователь нажимает 1 + 2, а затем = вычисление будет отображать 3и затем будет увеличиваться на значение второго числа (в данном случае 2) для каждого последующего нажатия = (т.е. 1 + 2 = 3 = 5 = 7 ....) мой калькулятор сейчас делает противоположное (т.е.. 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;
}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Это оказалось лучшим способом решить мою проблему. По сути, это переменный переключатель, который прекрасно работает с остальным кодом моего калькулятора: -)

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);
  }
}
0 голосов
/ 02 февраля 2012

Вы можете попробовать что-то вроде

  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, и каждый раз, когда вы просто используете эту первую у. Я думаю, что это должно работать

...