【问题标题】:How can a function manipulate parameters passed via another function? Javascript一个函数如何操作通过另一个函数传递的参数? Javascript
【发布时间】:2016-07-13 16:40:40
【问题描述】:

抱歉,第一次尝试解释这个问题很糟糕。尝试学习 Javascript 和来自代码问题(codewars)的问题让我很难过。它声明,编写一个函数,该函数将另一个函数作为参数并缓存结果,以便如果发送相同的参数,则从缓存中提取返回,并且不会再次调用实际函数。例如:

var x = function(a, b) { a * b };
var cachedFunction = cache(x);

cachedFunction(4, 5); // function x should be executed
cachedFunction(4, 5); // function x should not be invoked again, instead the cached result should be returned
cachedFunction(4, 6); // should be executed, because the method wasn't invoked before with these arguments

我不确定如何访问通过 cachedFunction 发送的参数。目标是编写缓存,以便它可以处理带有任意数量参数的函数 x。

【问题讨论】:

  • 您实际上并没有将x54 传递给cache 函数。您将 5 和 4 传递给 x 函数,接收结果,然后将 that 传递给 cache。 (物有所值)
  • 你不能。您的 cache 函数正在以 20 的值调用(x(5,4)结果),它不知道传递给 xx 的值是什么曾经打电话。另外,您的cache 函数有什么作用?您是否supposed 将其传递给函数?因为目前,你不是。
  • 抱歉,我第一次尝试理解问题和措辞很糟糕。我已经重写了。不确定正确的礼仪是完全废弃原件并重写还是进行如此大的编辑。如果我应该做前者,我深表歉意。
  • 您的编辑使所有给定的答案无效,因为您的问题现在是一个非常不同的问题。最好还原您的编辑并提出一个新问题。

标签: javascript function parameter-passing


【解决方案1】:

你所描述的是不可能的。

表达式x(5, 4)cache() 函数被调用之前就被计算了。它没有接收功能。它正在接收值20

【讨论】:

    【解决方案2】:

    在您的示例中,cache 只能访问x 的返回值。它不知道该返回值是如何计算的(即通过使用参数5, 4 调用x)。

    您需要单独将函数及其参数传递给cache 函数,例如。 G。如下:

    function cache(func, ...params) {
      // Todo: do something with params  
      return func(...params);
    }
    
    function x(a, b){
      return a * b;
    }
    
    console.log(cache(x, 5, 4));

    【讨论】:

      【解决方案3】:

      你可以像这样返回一个表:

      function x(a,b){
          return [a, b, a*b];
      }
      

      之后你可以得到这样的参数:

      var result=x(values1,value2);
      console.log(result[0]);// a == value1
      console.log(result[1]);// b == value2
      console.log(result[2]);// a*b == value1*value2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        相关资源
        最近更新 更多