Javascript 如何在不使用匿名函数的情况下调用带参数的函数?

Javascript 如何在不使用匿名函数的情况下调用带参数的函数?,javascript,Javascript,我有以下问题,我想调用函数b,就像调用函数a。 以下是一个例子: $('#clickme').click(function () { console.log("abc"); }); function a() { console.log("a"); } function b(b) { console.log(b); } $('#clickmea').click(a); // how to call this method without using a anonymous fun

我有以下问题,我想调用函数
b
,就像调用函数
a
。 以下是一个例子:

$('#clickme').click(function () {
  console.log("abc");
});

function a() {
  console.log("a");
}
function b(b) {
  console.log(b);
}

$('#clickmea').click(a);

// how to call this method without using a anonymous function?
$('#clickmeb').click(b("ab"));
或者不使用匿名函数就不能调用
b(“ab”)


如果不使用匿名函数,则无法执行此操作:

$('#clickmeb').click(function(){b("ab")});
function callback(){
    b("ab")
}
$('#clickmeb').click(callback);
或包装器函数:

$('#clickmeb').click(function(){b("ab")});
function callback(){
    b("ab")
}
$('#clickmeb').click(callback);
不需要从回调返回匿名函数。那只是多余的代码,没有任何用处

事实上,它不会将变量传递到回调:

function callback(){
    return function(){
        b("ab") // There will be no arguments passed to this anonymous function, unless you explicitly add them. 
    }
}

如果“不使用匿名函数”,则无法执行此操作。您可以对函数b进行货币化,但为此,您需要一个函数(匿名或非匿名),该函数在调用时将所需参数传递给
b
。如果你使用一个库来实现这一点,在幕后也会发生同样的情况。或者你可以使用一个库来部分应用函数
b
,最后它只是使用了一个匿名函数。@Marty:这不是一个有效的编辑。你详细说明你这样做的理由吗?我不认为有必要用一句话把另一个答案说成你自己的答案不好。所以,你自己处理事情,把这句话去掉。你本可以就此事发表评论的。我只想省去另一个答案所暗示的评论,@Marty。这是为了避免你看起来像一个糟糕的运动员,特别是说其他答案做了一些你不同意的事情。我想现在读起来不错。