我很难绕过这个想法。假设我有以下
var func1 = function(func2){
return func2
}
var addTwo = function(x) {return x + 2};
var two = func1(addTwo(2))
console.log(two) // returns 4
如果我想向func1
添加引用addTwo
中的参数或我选择作为参数的任何其他函数的代码,我该如何做?我想访问func1中函数参数的参数。我希望这是有道理的。
答案 0 :(得分:0)
你可以这样写。
var func1 = function(val, func2){
return func2(val);
}
var addTwo = function(x) {return x + 2};
var two = func1(2, addTwo);
console.log(two); // returns 4
答案 1 :(得分:0)
我认为这可能是你想要的:
function log_and_call(func, args) {
args = [].slice.call(arguments, 1); // Get arguments except first
console.log(args);
return func.apply(this, args);
}
var addTwo = function(x) {return x + 2; };
log_and_call(addTwo, 2); // Logs [2] and returns 4
var multiply = function(x, y) { return x * y; }
log_and_call(multiply, 3, 4); // Logs [3, 4] and returns 12

arguments
是一个特殊变量,包含传递给当前函数的所有参数的列表。这使用slice
来跳过func
参数,然后完成其余的工作。
您无法将其称为log_and_call(addTwo(2))
,因为当您编写addTwo(2)
时,它会调用该函数并返回其值,并将该值传递给log_and_call
。 log_and_call
无法在该调用中进行调解或查看其结构,只会获得结果。