创建一个将另一个函数带入自身的函数

时间:2016-07-10 15:44:11

标签: javascript

spread(someFunction, [1, true, "Foo", "bar"] )  // is the same as...
someFunction(1, true, "Foo", "bar")

我写了这段代码但有些错误:

function spread(func, args) {
    func();
}
function func(args){
    console.log(args[0] + args[1]);
}
spread(func,[5,6])

TypeError:args未定义,但我无法定义它,因为它将在调用函数时定义。

  

传播(FUNC,[5,6])

我也不能使用变量。我可以就是这种功能。 (这是一个测试)

2 个答案:

答案 0 :(得分:2)

在JS中只有两种方法可以实现这样的功能。一个生成一个表示函数调用并使用Function.prototype.apply来评估它的字符串。

spread(add, [1, 2]); //3

function add(num1, num2) { return num1 + num2; }

function spread(fn, args) {
    return fn.apply(null, args);
}

答案 1 :(得分:0)

如果要将结果保存在变量中,则必须将参数传递给func并返回它。

function spread(func, args) {
    return func(args);
}
function func(args){
    console.log(args[0] + args[1]);
    //do something more, maybe:
    return (args[0] + args[1])
}
var result = spread(func,[5,6])