javascript - 函数一次接受回调作为输入并返回一个函数。

标签 javascript closures

编写一个函数,接受回调作为输入并返回一个函数。当第一次调用返回的函数时,它应该调用回调并返回该输出。如果多次调用它,它不会再次调用回调,而是简单地返回第一次调用时的输出值。

帮助!我遇到了类似语法错误非法返回语句的错误,我在为上述挑战编写闭包时陷入困境,这是我的代码:

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;
}

最佳答案

您需要在函数外部声明被调用的变量

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;
}

关于javascript - 函数一次接受回调作为输入并返回一个函数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001838/

相关文章:

javascript - React.JS 组件类中的递归函数

javascript 正则表达式 短信字符数

javascript - 突出显示表行

javascript - 在 mootools 中使用超时

javascript - 我想从闭包外部更改变量 'inner' 的值,但我的输出似乎未定义

scope - Python的非本地取决于层次结构?

javascript - 使用 PHP MySQL 将选项标记值重置为数据库中的 1

go - 从 Go 闭包返回一个方法

javascript - javascript 中的 for 循环中的闭包

c# - 使用 Func 捕获类属性