在解决编程挑战时,我编写了一个函数,该函数旨在将函数作为参数并返回函数。返回的函数用于执行参数函数(传递给第一个函数)。函数的代码: -
function func1(f){
let func2 = function(){
if(/*a condition based on a global variable*/){
f();
}
}
return func2;
}
这目前无法正常工作,它会引发Illegal Invocation Type Error
。我看到this问题,但我不知道如何将它的答案与我的代码联系起来。所以,我的问题是: -
<小时/>
修改
我正在调用这样的函数: -
var someFunc = func1(alert);
someFunc("foo");
someFunc("bar");
答案 0 :(得分:2)
你需要处理
这是一个实现:
function func1(f, context){
let func2 = function(){
if( some condition ){
return f.apply(context, arguments);
} // there probably should be some "else" behavior...
}
return func2;
}
使用一些示例:
var fun = func1(console.log, console);
fun("A", 25); // logs "A", 25
fun = func1(alert);
fun("foo"); // alerts "foo"
答案 1 :(得分:-1)
为什么不使用var
代替let
function func1(f){
var func2 = function(){
if(/*a condition based on a global variable*/){
f();
}
}
return func2;
}