asu*_*and 2 javascript functional-programming
我正在尝试使用一个传递函数的函数,并使用一组args调用它.例如:
function foo(func, args) {
return func(args);
}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道args中可能有多少个元素,而func应该能够成为任意数量的args的任意函数.我该如何处理?
另外说我想存储传递给foo的函数,只有在之前没有调用它们时才调用它们.
我可以这样做:
var calledFuncs = [];
function foo(func, args) {
if(calledFuncs.indexOf(func) === -1) {
calledFuncs.push(func);
return func(args);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,我对JavaScript中的函数式编程有点新意.
您正在寻找func.apply:
this值.你不想改变它,所以传递它.所以你可以这样做:
return func.apply(this, args);
Run Code Online (Sandbox Code Playgroud)
你似乎对第二个问题有了很好的解决方法(func(args)替换后).但是,您可能希望存储被调用函数的返回值,因为foo现在返回undefined除第一个之外的任何调用.
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |