编写一个函数,该函数接受回调作为输入并返回一个函数。第一次调用返回的函数时,它应调用回调并返回该输出。如果再调用一次,则无需再次调用该回调,而只是从第一次调用时返回输出值。
帮助!我遇到了类似Syntax-error Illegal return statement的错误,我被困在为上述挑战编写闭包时,这是我的代码:
function once(func) {
var called = 0,result;
function inner(num){
if(!result && called <2){
called++;
result = func(num);
return result;
}else{
return result;
}
}
}
return inner;
}
答案 0 :(得分:1)
您需要在函数外部声明被调用的变量
var called = 0;
function once(func) {
var result;
function inner(num){
if(!result && called <2){
called++;
result = func(num);
return result;
}else{
return result;
}
}
return inner;
}
答案 1 :(得分:0)
我遇到了类似语法错误的非法返回语句之类的错误
} //<--- extra/un-wanted
return inner;
}
尝试一下:
var add = (function(cb) {
var done = false;
var data = 0;
return function(num) {
if (!done) {
done = true;
data = (num + 1);
}
cb(data);
};
});
var bar = function(res) {
console.log('bar, res = ', res);
};
var foo = add(bar);
foo(2);
foo(1);