如何访问作为Javascript中的参数的函数的参数

时间:2015-02-12 00:45:06

标签: javascript

我很难绕过这个想法。假设我有以下

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中函数参数的参数。我希望这是有道理的。

2 个答案:

答案 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_calllog_and_call无法在该调用中进行调解或查看其结构,只会获得结果。