它应该在第一次运行时进行回调,然后如果它收到任何调用,它应该只返回第一次运行的值
function once(func) {
let callback = func;
let called = false;
let output;
return function (x) {
if (called === false) {
output = callback(x);
called = true;
}
return output;
};
}
/*** Uncomment these to check your work! ***/
const onceFunc = once((x) => x+2);
console.log(onceFunc(4)); // => should log 6
console.log(onceFunc(10)); // => should log 6
console.log(onceFunc(9001)); // => should log 6
这是一个挑战,这就是问题所在: 编写一个函数,接受回调作为输入并返回一个函数。当第一次调用返回的函数时,它应该调用回调并返回该输出。如果再次调用它,它不会再次调用回调,它只会返回第一次调用时的输出值。
我尝试使用 true/false 标志,然后使用 runTimes 计数器,但结果都是相同的,第一次总是返回正确的值,然后在每次调用时返回未识别的值(知道它只被调用 3 次,但控制台显示 4 个结果)。
这个解决方案应该有效!当我点击“运行代码片段”时,它对我有用