Javascript 将参数传递给作为参数传递的回调

Javascript 将参数传递给作为参数传递的回调,javascript,Javascript,在以下代码中: makeComponent: function(componentBuilder, myLib) { componentBuilder.build(function(cmpDefinition, status){ if (status === 'OK') { myLib.doSomething(cmpDefinition); } }); } 我想将内部回调函数放在一个单独的函数中: callBackFunc: function(myLib)

在以下代码中:

makeComponent: function(componentBuilder, myLib) {
  componentBuilder.build(function(cmpDefinition, status){
    if (status === 'OK') {
      myLib.doSomething(cmpDefinition);
    }
  });
}
我想将内部回调函数放在一个单独的函数中:

callBackFunc: function(myLib) {
   return function(cmpDefinition, status) {
        if (status === 'OK') {
          myLib.doSomething(cmpDefinition);
        }
   }
}

makeComponent: function(componentBuilder, myLib) {
  var callBackFuncVar = callBackFunc(myLib);
  componentBuilder.build(callBackFuncVar(cmpDefinition, status));
}
此代码不起作用,我需要将
makeComponent
函数更改为以下内容:

makeComponent: function(componentBuilder, myLib) {
  var callBackFuncVar = callBackFunc(myLib);
  componentBuilder.build(function(cmpDefinition, status) {
       callBackFuncVar(cmpDefinition, status)      
  });
}
为什么直接调用
callBackFuncVar
并向其传递参数(如上所述)不起作用

已编辑

如果我这样做怎么办:

callBackFunc: function(cmpDefinition, status) {
        var myLib = this.myLib;
        if (status === 'OK') {
          myLib.doSomething(cmpDefinition);
        }
   }

makeComponent: function(componentBuilder, myLib) {
  componentBuilder.build(callBackFunc.bind(this));
}

您应该这样做:

callBackFunc: function(myLib) {
   return function(cmpDefinition, status) {
        if (status === 'OK') {
          myLib.doSomething(cmpDefinition);
        }
   }
}

makeComponent: function(componentBuilder, myLib) {
  var callBackFuncVar = callBackFunc(myLib);
  componentBuilder.build(callBackFuncVar);
}

这背后的原因是,
componentBuilder.build
在第一个示例中接收一个函数,在第二个示例中接收callBackFuncVar的结果,而不是callBackFuncVar函数。

在另一个问题中,我们如何将参数传递给
callBackFunc
?我不完全理解您指的是callBackFunc还是callBackFunc返回的函数。无论如何,您应该阅读JavaScript中的
call
apply
bind
方法。它可能会帮助您理解JavaScript中的函数编程。我指的是由
callBackFunc
返回的函数,就像其他函数一样
callBackFuncVar(cmpDefinition,status)
将使用这些参数调用函数,但在第二个错误的示例中,
componentBuilder.build
需要一个函数,不是函数调用,也不是函数调用的结果。如果我将outter函数
callBackFunc
替换为内部函数
函数(cmpDefinition,status)
并将(this)绑定到
makeComponent
中的回调函数,该怎么办?