如果我从一个函数返回一个函数,如下所示,我该如何执行它并设置参数?
var func1 = function(param){
// do stuff
};
function returnFunction(){
return func1;
}
returnFunction() // this will return func1 but I want to execute it with certain param.
答案 0 :(得分:6)
您可以像平常一样执行它:
returnFunction()("whatever");
让它更容易阅读:
var fn = returnFunction();
fn("whatever");
答案 1 :(得分:2)
像任何其他函数调用一样:
returnFunction()(foobar)
答案 2 :(得分:0)
您似乎将功能视为某些magical construct。
但是,函数只是可以使用()
运算符操作的值。
!(x || y)
对你来说有点奇怪吗? !
在某种程度上与()
非常相似,只是您在其操作数之前将其写入,而在之后编写()
操作数。他们获取一个值,操作它并返回一个值,这就是它的全部内容。
理解了这一点后,x()()()
不会看起来很奇怪,它只是异常:x
显然是一个函数,它返回一个函数,返回一个函数,返回一些东西:值(x()()())
如您所知,returnFunction()
将返回func1
。因此,整个表达式returnFunction()
会产生 值 func1
,因为您可以将()
运算符应用于值,这就是你需要做的所有事情:
returnFunction()(arg)