【问题标题】:How to call javascript function without changing its previous value?如何在不更改其先前值的情况下调用 javascript 函数?
【发布时间】:2014-04-29 07:30:59
【问题描述】:

我需要在不更改它之前的值的情况下多次调用 javascript 函数。 我有一个名为 icon 的 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();
         ..
      }
   }
}

如果映射函数再次调用它自己的函数,主映射函数中的值将被覆盖。我不知道如何在不更改以前值的情况下调用它自己的函数.. 有没有其他方法可以做到这一点?

【问题讨论】:

  • "主地图函数中的值覆盖" - 哪些?请更具体并显示整个代码。您似乎有可能无意中使用了全局变量,通常这种递归可以正常工作。

标签: javascript jquery html function switch-statement


【解决方案1】:

我不知道我是否理解正确你的问题,但你可以尝试使用称为记忆的技术。用于缓存之前计算值的结果,避免重新计算。

这是一个简单的例子

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多