如果我从如下所示的函数中返回一个函数,我该如何执行它并设置参数?
var func1 = function(param){
// do stuff
};
function returnFunction(){
return func1;
}
returnFunction() // this will return func1 but I want to execute it with certain param.
如果我从如下所示的函数中返回一个函数,我该如何执行它并设置参数?
var func1 = function(param){
// do stuff
};
function returnFunction(){
return func1;
}
returnFunction() // this will return func1 but I want to execute it with certain param.
你可以像往常一样执行它:
returnFunction()("whatever");
这是一个工作示例。
为了使它更容易阅读:
var fn = returnFunction();
fn("whatever");
像任何其他函数调用一样:
returnFunction()(foobar)
您似乎将函数视为某种神奇的构造。
但是,函数只是一个可以使用()
运算符进行操作的值。
你!(x || y)
觉得奇怪吗?!
在某种程度上非常相似()
,除了你在它的操作数之前写它而你在操作数()
之后写它。他们接受一个值,操作它,然后返回一个值,这就是它的全部。
明白了这一点,看起来x()()()
并不奇怪,它只是不寻常:x
显然是一个函数,它返回一个函数,它返回一个函数,它返回一些东西:值(x()()())
如您所知,returnFunction()
将返回func1
。因此,整个表达式returnFunction()
产生value func1
,并且由于您可以将运算()
符应用于values,这就是您需要做的所有事情:
returnFunction()(arg)