Как вызвать функцию JavaScript без изменения ее предыдущего значения?

0

Мне нужно вызывать функцию javascript любое количество раз, не меняя предыдущие значения. У меня есть значок json, в котором есть 15 значков, и я использую оператор switch для вызова функции соответствующего значка. У меня проблема, когда появляется значок карты, потому что значок карты обычно группирует все значки, что означает, что в нем может быть еще один значок карты. Ниже мой код.

for(var i = 0;i<icon.length;i++) {
   switch(icon.type) {
      case 1:
         display();
      case 2:
         map();
      ..
   }
}

И функция карты будет похожа на

function map() {
   for(var i = 0;i<icon.length;i++) {
      switch(icon.type) {
         case 1:
            display();
         case 2:
            map();
         ..
      }
   }
}

Если функция карты снова вызывает свою собственную функцию, значения в основной функции карты переопределяются. Я не знаю, как сделать вызов своей функции без изменения предыдущих значений. Есть ли другой способ достичь этого?

  • 0
    « значения в основной функции карты переопределяют » - какие? Пожалуйста, будьте более конкретны и покажите весь код. Вероятно, у вас непреднамеренно глобальные переменные или около того, обычно такая рекурсия будет работать нормально.
Теги:
switch-statement
function

1 ответ

0

Я не знаю, правильно ли я понял вашу проблему, но вы можете попытаться использовать технику, называемую memoization. Он используется для кэширования результата ранее вычисленного значения, поэтому может избежать необходимости пересчета.

И вот простой пример того, как это можно сделать

function isPrime(value) {
if (!isPrime.anwers) isPrime.answers = {};
if (isPrime.answers[value] != null) {
    return isPrime.answers[value];
}

var prime = value != 1; // 1 can never be prime

for (var i = 2; i < value; i++) {
    if (value % i == 0) {
        prime = false;
        break;
     }
}

return isPrime.answers[value] = prime;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню