函数如何操作通过另一个函数传递的参数?使用Javascript

时间:2016-07-13 16:40:41

标签: javascript function parameter-passing

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

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。

3 个答案:

答案 0 :(得分:2)

您无法描述的内容。

在调用x(5, 4)函数之前评估表达式cache()。它没有收到任何功能。它收到了值20

答案 1 :(得分:1)

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

您需要将函数及其参数单独传递给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));




答案 2 :(得分:0)

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

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