2016-07-10 43 views
0
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]) 

类型错误:参数表是不确定的,但我无法定义它,因为它会被定义时调用该函数。

spread(func,[5,6])

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

+0

你调用'func()'而不传递任何参数给它。 – Pointy

回答

2

只有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); 
} 
+0

非常感谢。 – Mewtei

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]) 
+0

谢谢,但我在测试脚本的IDE中得到这个错误: /runner/frameworks/javascript/cw-2.js:256 throw ex; ^ TestError:预计:3,改为:1,2未定义 – Mewtei

相关问题