这个功能有什么问题吗? JS 闭包挑战 [已关闭]

问题描述 投票:0回答:1

它应该在第一次运行时进行回调,然后如果它收到任何调用,它应该只返回第一次运行的值

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 个结果)。

javascript closures
1个回答
-2
投票

这个解决方案应该有效!当我点击“运行代码片段”时,它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.