对不起,第一次尝试解释这个问题很糟糕。试图从代码问题(代码大战)中学习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。
答案 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