【问题标题】:What is the syntax to pass a function and it arguments to another function to execute it? [duplicate]将函数及其参数传递给另一个函数以执行它的语法是什么? [复制]
【发布时间】:2016-04-09 16:03:04
【问题描述】:

我有一个foo 函数:

var foo = function(input) {
  console.log(input)
}

还有一个bar 函数:

var bar = function(fn, condition) {
  if (condition) {
    fn();
  }
}

我想将foo 作为bar 的参数传递,例如:bar(foo, true);

问题是必须调用foo 来执行参数。如果我使用bar(foo('param'), false);,foo 将在bar 开始之前执行并检查条件。

JavaScript 语法有没有更好的解决方案?

我知道我可以将 bar 函数修改为以下内容,但我不想修改 bar 实现:

var bar = function(fn, fnParam, condition) {
  if (condition) {
    fn(fnParam);
  }
}

【问题讨论】:

    标签: javascript function syntax


    【解决方案1】:

    你可以使用这种格式:bar(function() { foo(param); },false),除非你需要foo函数中的元信息,比如name,这种情况下你需要使用function(fn, paramArray, condition)...方法

    请注意,使用新的 Javascript 功能,例如 Arrow functions,您可以使用 bar(()=>foo(param),false) 编写相同的内容,但并非所有浏览器都支持此语法。

    【讨论】:

    • 太棒了!这不像我预期的那样可读,但已经足够了!
    • -> 不是箭头函数,=> 是。
    • 你是对的。修正了错字。
    • @kimb:如果你的函数不需要调用者设置this值,你可以做bar(foo.bind(null, param), false)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2012-02-22
    • 2012-09-25
    • 2020-10-03
    相关资源
    最近更新 更多