JavaScript - 在自调用函数中传递回调函数

标签 javascript closures self-invoking-function

我试图在 JavaScript 中的 自调用函数 中传递一个 callback 函数,但是当 done 函数是执行。

我读了this answer在下面编写此代码:

function done() {
    console.log(dateFilter.getI());
    console.log(dateFilter.getF());
}

var dateFilter = (function(callback) {
    var _dInicio = new Date(), _d = new Date(),
        _dFim = new Date(_d.setMonth(new Date().getMonth() - 1));
    return {
        getI: function() { return _dInicio; },
        getF: function() { return _dFim; },
        setI: function(d) { _dInicio = d; },
        setF: function(d) { _dFim = d; }
    }, callback();

 })(done);

也许我正在使用 comma operator错了,但我认为这应该有效。有人可以指出我误解了什么吗?

最佳答案

您在 return 之后调用了 done 函数,此外,您没有传递参数 dateFilter

return { -> return before calling callback `function`.
    getI: function() { return _dInicio; },
    getF: function() { return _dFim; },
    setI: function(d) { _dInicio = d; },
    setF: function(d) { _dFim = d; }
}, callback( );
            ^
            |_ Calling callback without param `dateFilter`

看这段代码

function done(dateFilter) {
  console.log(dateFilter.getI());
  console.log(dateFilter.getF());
}

(function(callback) {
  var _dInicio = new Date(),
    _d = new Date(),
    _dFim = new Date(_d.setMonth(new Date().getMonth() - 1));

  callback({
    getI: function() {
      return _dInicio;
    },
    getF: function() {
      return _dFim;
    },
    setI: function(d) {
      _dInicio = d;
    },
    setF: function(d) {
      _dFim = d;
    }
  });

})(done);

看到了吗?现在正在打印值。

关于JavaScript - 在自调用函数中传递回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648780/

相关文章:

javascript - 使用 Javascript 从表单中获取 HTML 中的隐藏输入(名称中带有句点)

swift - 在 Swift 中使用闭包从函数中检索字符串值

swift - 关闭 - deinit self 对象的时间

javascript - 为什么允许通过原型(prototype)继承访问另一个闭包作用域中的私有(private)变量?

javascript - jquery 是处理最后输出到页面的好方法

javascript - 错误: [$injector:unpr] Unknown provider in jasmine test when routeprovider service is injected in a controller

javascript - Jade 模板 : Make an image a link

Typescript strictNull 检查和闭包

javascript - 自调用函数作为 jQuery 文件就绪回调

javascript - 使用 <a href ="javascript:myFunction()"> 访问外部 js 文件中的函数