【问题标题】:Function as an argument to a function in Javascript [duplicate]函数作为Javascript中函数的参数[重复]
【发布时间】:2014-12-23 14:33:41
【问题描述】:

我正在尝试实现一个函数,该函数将另一个函数作为参数,并返回该函数的新版本,该函数只能被调用一次。

对结果函数的后续调用应该没有效果(并且应该返回未定义)。

例如:

logOnce = once(console.log) 
logOnce("foo") // -> "foo" 
logOnce("bar") // -> no effect

【问题讨论】:

  • 您有工作的fiddle 来说明您的问题吗?因为按原样,我们无法理解……
  • 你有什么问题?
  • 他想要一个只能运行一次的函数。
  • once(console.log, "foo"); 好吗?比它更容易。
  • 这里的函数曾经有参数console.log,它被分配给logOnce。因此,如果我调用 logOnce("foo") 它应该返回与 console.log("foo") 相同的功能。但这应该只被调用一次。

标签: javascript oop


【解决方案1】:

您可以在作为参数传递的函数对象上使用标志

function once(func){
  return function(){
    if(!func.performed){
      func.apply(this,arguments);
      func.performed = true;
    }    
  }
}

var logOnce = once(console.log);
logOnce("Test 1");
logOnce("Test 2");

【讨论】:

  • 感谢您的回答,但它应该只运行一次,第二次应该什么都不做(或返回未定义)。
  • 第二次不记录事实
猜你喜欢
  • 2015-12-02
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
相关资源
最近更新 更多