0

如果我从如下所示的函数中返回一个函数,我该如何执行它并设置参数?

var func1 = function(param){
    // do stuff
};

function returnFunction(){
    return func1;
}

returnFunction() // this will return func1 but I want to execute it with certain param.
4

3 回答 3

6

你可以像往常一样执行它:

returnFunction()("whatever");

这是一个工作示例

为了使它更容易阅读:

var fn = returnFunction();
fn("whatever");
于 2012-10-12T13:26:08.973 回答
2

像任何其他函数调用一样:

returnFunction()(foobar)
于 2012-10-12T13:26:19.010 回答
0

您似乎将函数视为某种神奇的构造

调用函数并不神奇

但是,函数只是一个可以使用()运算符进行操作的值。

!(x || y)觉得奇怪吗?!在某种程度上非常相似(),除了你在它的操作数之前写它而你在操作数() 之后写它。他们接受一个值,操作它,然后返回一个值,这就是它的全部。

明白了这一点,看起来x()()() 并不奇怪,它只是不寻常x显然是一个函数,它返回一个函数,它返回一个函数,它返回一些东西:值(x()()())

将这种新理解应用于您的示例

如您所知,returnFunction()将返回func1。因此,整个表达式returnFunction() 产生value func1,并且由于您可以将运算()符应用于values,这就是您需要做的所有事情:

returnFunction()(arg)
于 2012-10-12T14:57:56.943 回答